[英]Web Api Controller in other project, route attribute not working
我有兩個項目的解決方案。 一個Web Api bootstap項目,另一個是類庫。
類庫包含一個帶屬性路由的ApiController。 我將web api項目中的引用添加到類庫中,並希望它能夠正常工作。
Web api中的路由配置為:
config.MapHttpAttributeRoutes();
控制器很簡單,看起來像:
public class AlertApiController:ApiController
{
[Route("alert")]
[HttpGet]
public HttpResponseMessage GetAlert()
{
return Request.CreateResponse<string>(HttpStatusCode.OK, "alert");
}
}
但是當我轉到網址“/ alert”時我得到了404。
我在這里錯過了什么? 為什么我不能使用這個控制器? 組裝肯定是加載所以我不認為http://www.strathweb.com/2012/06/using-controllers-from-an-external-assembly-in-asp-net-web-api/是答案這里。
有任何想法嗎?
試試這個。 在類庫項目中創建一個如下所示的類,
public static class MyApiConfig {
public static void Register(HttpConfiguration config) {
config.MapHttpAttributeRoutes();
}
}
無論你當前在哪里調用config.MapHttpAttributeRoutes()
,而是調用MyApiConfig.Register(config)
。
一種可能性是您在具有相同名稱的不同控制器上有2條路由。
我有兩個名為“UploadController”的控制器,每個控制器位於不同的命名空間中,每個控制器都用不同的[RoutePrefix()]裝飾。 當我試圖訪問任一路線時,我得到了404。
當我更改其中一個控制器的名稱時,它開始工作。 似乎Route屬性僅鍵入類名並忽略命名空間。
我們試圖解決類似的問題。 外部程序集中的路徑未正確注冊。 我們在嘗試此頁面上顯示的解決方案時發現了一個額外的細節。 在調用MapHttpRoute之前需要調用外部程序集“MyApiConfig.Register”
HttpConfiguration config = new HttpConfiguration();
MyExternalNamespace.MyApiConfig.Register(config); //This needs to be before the call to "config.Routes.MapHttpRoute(..."
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.