簡體   English   中英

使用RouteAttribute和IIS應用程序會出現404錯誤

[英]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.

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