如何将MVC添加到现有的Web API项目中

use*_*703 5 asp.net-mvc asp.net-web-api

目前我有一个web api项目,我想添加一个可以创建用户和修改权限的管理页面,但是似乎几乎没有关于如何将MVC添加到现有web api项目的文档.

tno*_*007 13

对于使用.Net Core 3 的任何人,请使用此模板配置您的Startup.cs

注意,我已经注释掉了现有的 Web Api 代码。

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        //services.AddControllers();
        services.AddControllersWithViews();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            //endpoints.MapControllers();
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");             
        });
    }
}
Run Code Online (Sandbox Code Playgroud)


SJP*_*SJP 10

我使用WebApi而不是MVC的项目有类似的问题,并使用以下方法稍后添加MVC:

  • 我使用nugget将Microsoft.AspNet.Mvc以及Microsoft.AspNet.Web.Optimization添加到项目中
  • 我将一个RouteConfig文件(由MVC模板创建)添加到App_Start文件夹,并在Global.asax.cs类中执行了RegisterRoutes方法,再次与新的MVC项目相对应.这允许控制器被调用.
  • 我添加了我的Controller(Home)和一个新的View(Index.cshtml).添加View创建了Shared/_Layout.cshtml以及_ViewStart.cshtml文件

一旦我启动该项目,它导致我收到以下错误消息:

视图必须派生自WebViewPage或WebViewPage <TModel>

  • 在研究了这个问题之后,我在msdn上发现了一篇描述解决方案的文章.缺少的组件是Views文件夹中的Web.config文件.您可以再次从现有的MVC项目中复制文件
  • 在Web.config文件中,我不得不从System.web.webPages.razor部分删除旧项目默认命名空间,并将其替换为我自己的默认命名空间

完成后,我可以使用标准的MVC控制器.