簡體   English   中英

在Azure上無法識別WebAPI路由

[英]WebAPI Routes not being recognized on Azure

我正在嘗試將WebAPI項目部署到Azure。

它在本地工作。 當我將其Publish到Azure時,我在控制器路由上得到404。

查看日志,我看到路由被當作靜態文件處理,而不是通過我的控制器。

Module IIS Web Core Notification MapRequestHandler Handler StaticFile Error Code 0x80070002 Requested URL http://xxxxx:80/api/studies Physical Path D:\\home\\site\\wwwroot\\api\\studies Logon Method Anonymous Logon User Anonymous

我的Global.asax是:

    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }

我的WebApiConfig.Register是:

    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

我看過類似的問題,並嘗試將Web.config調整為無濟於事。 當前看起來像這樣(僅相關部分):

<system.webServer>
    <httpErrors existingResponse="PassThrough"/>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
 </system.webServer>

順便說一句,我使用的是Entity Framework 6,而不使用MVC,只是直接使用WebAPI。

我的Global.asax某種方式被排除在項目之外,因此路由映射從未發生。

我遇到過同樣的問題。 直到更改我的Web配置使其看起來像對我來說都解決了

<handlers>
        <remove name="WebDAV" />
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <remove name="OPTIONSVerbHandler" />
        <remove name="TRACEVerbHandler" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

您是否已檢查服務器的所有必需Windows功能? IIS可能缺少某些功能,例如:Internet信息服務-萬維網服務-應用程序開發功能-ASP.NET。 您可以轉到Windows功能(如果您在Windows Server上,則通過服務器管理器)來查找並檢查計算機上安裝了哪些功能。

如果那不是您的問題,則有時可能是由於未正確安裝ASP.NET。 :此文章下面你可以重新安裝ASP.NET http://support.microsoft.com/kb/2736284 (這取決於你的操作系統)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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