1
所以我在我們的Web API項目中做了很少的重構,並且我注意到抽取具有所有必需屬性的抽象類中的控制器之一是很好的,所以我做了什麼是:抽象控制器方法在具體的控制器方法中不能被識別
提取抽象類和方法從我現有的控制器:
[RoutePrefix("api/auth")] public class AdminController : BaseAdminController
所以BaseAdminController
看起來是這樣的:
public abstract class BaseAdminController : BaseApiController
{
[HttpGet]
[Route("validatetoken")]
public abstract IHttpActionResult ValidateToken(string token);
}
這是我使用的路由:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/"
);
}
現在我注意到,測試與抽象控制器它給人的代碼時拋出:
沒有類型發現控制器匹配命名爲'auth'
雖然同樣的實現,但沒有抽象類和方法的工作很好。
我這個URL測試:
http://localhost:60747/api/auth/validatetoken?auth_token=117a2686-dad3-4b1e-a5eb-94aebed45d06
我不明白..我的'RoutePrefix'屬性放在我的具體類上,whatelse是我反編譯'Microsoft.AspNet.WebApi.Core.5.2.3 \ lib \ net45 \ System.Web.Http .dll「(這是我的項目使用這個屬性的程序集)和RouteAttribute標記爲'Inherited = true'我有點驚訝,MSDN顯示相反.. – kuskmen
這個答案是錯誤的。查看鏈接的副本。 – Nkosi