[英]Using RouteAttribute and IIS Application gives 404 error
我已經創建了一個webAPI項目,並且想開始在IIS中托管它。
控制器中的方法如下所示:
[TokenAuthentication]
[HttpGet]
[Authorize(Roles=Roles.PING)]
[Route("~/Ping")]
public DateTime Ping()
{
return DateTime.UtcNow;
}
我的WebApiConfig看起來像這樣:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
config.MapHttpAttributeRoutes();
GlobalConfiguration.Configuration.Filters.Add(new ValidateModelAttribute());
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
}
}
當我通過Visual Studio運行該項目,並轉到鏈接http:// localhost:53722 / ping時,我得到了我所期望的未經授權的響應。
當我將網站放在帶有虛擬路徑“ / Account”的應用程序中的IIS上時,我收到404響應,它正在嘗試使用StaticFile處理程序。
通過在線搜索,我將runAllManagedModulesForAllRequests設置為true。 我還發現將ASP.NET Web API應用程序配置為ASP.NET MVC應用程序下的虛擬目錄 ,似乎“ / Account /”不應干擾路由。
我無法將API放在路由目錄中,因為我將在同一站點下運行多個微服務。
我將如何使用虛擬目錄來工作?
謝謝,史蒂文
每個站點都應作為應用程序而不是虛擬目錄運行(理想情況下,每個站點都有自己的應用程序池)。
開箱即用
[Route("ping")]
這將為您提供一個http://blah.com/ping
的url如果您在子文件夾/應用程序中運行此api,則可能類似於http://blah.com/subapp/ping
這就是我所擁有的...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.