簡體   English   中英

asp.net 如何變成 MVC 或 WebApi?

[英]How an asp.net becomes MVC or WebApi?

我正在嘗試在 MVC 和 WebApi 之間進行選擇,因此在某些情況下 WebApi 更好(文檔、測試和...)而在某些情況下 MVC 控制器更好(在呈現 Razor 頁面等時)

但是,當我創建一個 asp.net MVC web 應用程序時,不會檢測到從 ApiController 繼承的任何控制器,如果我創建一個 asp.net WebApi web 應用程序,則不會檢測到任何從System.Web.Mvc.Controller繼承的控制器。

我比較了這兩個網絡應用程序的web.config ,沒有什么不同。

我有2個問題

  1. 如果兩個 web.config 相同,那么一個應用程序如何檢測僅從System.Web.Mvc.Controller繼承的控制器,而另一個應用程序如何僅檢測從ApiController繼承的控制器? 他們之間有什么不同?

  2. 我可以將 Web 應用程序配置為支持兩種控制器類型嗎?

如果您右鍵單擊並“轉到定義”兩個控制器,您會發現它們具有不同的命名空間,甚至實現了不同的基類,因此您將無法從“ApiController”(Web-Api)繼承一個類&“控制器”(MVC)同時(據我所知)。

但是,如果您在同一個項目中需要兩個控制器,您只需右鍵單擊並添加“Web-Api”控制器或“MVC 控制器”。

然后你可以在 MVC 控制器代碼上實際實例化和使用“Web-Api”控制器

您需要執行的步驟是:

1- 使Mvc Web 應用程序添加對System.Web.Http.WebHost引用。

2- 添加App_Start\\WebApiConfig.cs (參見下面的代碼片段)。

3- 在Global.asax.cs導入命名空間System.Web.Http

4- 在注冊默認 Web 應用程序路由之前,在MvcApplication.Application_Start() (在文件 Global.asax.cs 中)中調用WebApiConfig.Register(GlobalConfiguration.Configuration) ,否則將優先。

5- 添加一個從System.Web.Http.ApiController派生的控制器。

然后我可以從教程(你的第一個 ASP.NET Web API)中學到足夠的知識來定義我的 API 控制器。

App_Start\\WebApiConfig.cs:

using System.Web.Http;

class WebApiConfig
{
    public static void Register(HttpConfiguration configuration)
    {
        configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
            new { id = RouteParameter.Optional });
    }
}

Global.asax.cs:

using System.Web.Http;

...

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

必須安裝 NuGet 包Microsoft.AspNet.WebApi才能使上述內容正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM