C# WebApi应用程序:错误404.0,处理程序静态文件

C# WebApi应用程序:错误404.0,处理程序静态文件,c#,asp.net,.net,iis,asp.net-web-api,C#,Asp.net,.net,Iis,Asp.net Web Api,我刚刚尝试在带有IIS 7.0的Windows 2008R2上部署WebApi应用程序,IIS管理器到目前为止还没有动过 该应用程序在我们的开发服务器上运行(Win和IIS版本相同),没有任何麻烦。在部署服务器上 已安装.NET Framework 4.5 已安装ASP.NET功能,并且 已安装Windows身份验证 当我调用一个应该映射到ASP.NET的URL时,错误是 HTTP Error 404.0 Module IIS Web Code Notifica

我刚刚尝试在带有IIS 7.0的Windows 2008R2上部署WebApi应用程序,IIS管理器到目前为止还没有动过

该应用程序在我们的开发服务器上运行(Win和IIS版本相同),没有任何麻烦。在部署服务器上

  • 已安装.NET Framework 4.5
  • 已安装ASP.NET功能,并且
  • 已安装Windows身份验证
当我调用一个应该映射到ASP.NET的URL时,错误是

      HTTP Error 404.0

       Module IIS Web Code
 Notification MapRequestHandler
      Handler StaticFile
   Error code 0x80070002
Requested URL http://localhost:80/myapp/api/GetUserConfig
Physical Path C:\inetpub\wwwroot\myapp\api\GetUserConfig
 Logon Method Negotiate
   Logon User ADDOMAIN\Administrator
处理程序StaticFile似乎很重要-据我所知,原因是ASP.NET没有正确处理URL。在哪里可以开始搜索此问题的实际根源


我应该补充一点,其他多个部署都是在Windows 2012环境中成功进行的。

Microsoft应该在安装程序中设置一个版本,使其具有“ASP.NET”功能

在Windows 2008上安装ASP.NET功能时,将启用ASP.NET 3.5,而我需要ASP.NET 4

因此,在安装了.NET Framework v4之后,我将继续向IIS注册ASP.NET 4:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319> .\aspnet_regiis.exe -i 
资料来源:


我在使用Owin时遇到了类似的问题。清除ASP.NET临时文件修复了此问题。希望这对其他人有所帮助。

如果您试图调用无扩展URL,有一个官方的修补程序:

刚刚在IIS 10(Windows Server 2016)上的ASP.Net 4.6.2中有相同的行为,但它在IIS 8.5(Windows Server 2012 R2)上工作。结果是HTTP404.0,处理程序:StaticFile。我通过将ExtensionlessUrl处理程序添加到web.config解决了这个问题:

    <handlers>
        <remove name="ExtensionlessUrl-Integrated-4.0" />
        <add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>


名称
似乎很重要
name=“ExtensionlessUrl-Integrated-4.0”
有效,但
ExtensionlessUrlHandler-Integrated-4.0
无效。

查看配置文件了吗?一切正常吗?您是否启用了iis的静态内容功能?查看此博客了解如何:我的坏我误读了你的问题。听起来像是一个通知的复制品:你答案中的链接是dead@Ho谢谢,我相应地更新了答案。我也有同样的问题;IIS将请求当作静态文件请求来处理,即使它清楚地映射到控制器操作。但我有另一个web api应用程序在同一台服务器上正常工作,使用相同的应用程序池、相同版本的.net等,所以我不认为我缺少任何服务器端软件。Global.asax和Web.config以及WebApiConfig.cs文件完全相同。我映射到的控制器操作不需要任何参数。我只是不明白这可能是什么原因造成的。@Shavais你应该问个问题。在提出新问题之前,请确保bin文件夹包含所有引用的库。当bin文件夹中缺少一个DLL时,我也遇到了同样的问题。在发布该注释后,我发现使用不包含控制器名称的url会调用该操作。因此存在某种路由配置问题。但是我使用属性路由,并且在路由模板中使用{controller}。。所有这些都和另一个解决方案中的完全一样,它工作得很好。啊。是的,如果我不能很快弄明白的话,我会再问一个问题。我在这方面运气不好。。!!