[英]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個問題
如果兩個 web.config 相同,那么一個應用程序如何檢測僅從System.Web.Mvc.Controller
繼承的控制器,而另一個應用程序如何僅檢測從ApiController
繼承的控制器? 他們之間有什么不同?
我可以將 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.