我刚刚尝试在带有IIS 7.0的Windows 2008R2上部署WebApi应用程序,直到现在IIS操作系统都未触及。
应用程序在我们的开发服务器上运行(相同的Win和IIS版本),没有麻烦。在部署服务器上,
当我调用应映射到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
Handler StaticFile 似乎很重要 - 据我所知,原因是ASP.NET无法正确处理URL。我在哪里可以开始搜索此问题的实际根源?
我应该补充说,在Windows 2012环境中,所有其他部署都是成功的。
答案 0 :(得分:1)
微软绝对应该在" 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
来源:
答案 1 :(得分:0)
我使用Owin遇到了类似的问题。清除临时ASP.NET文件修复它。希望这有助于某人。
答案 2 :(得分:0)
如果您尝试拨打无扩展名网址,可以使用官方修补程序:roKeyboardScreen
答案 3 :(得分:0)
在IIS 10(Windows Server 2016)上的ASP.Net 4.6.2中也具有相同的行为,但在IIS 8.5(Windows Server 2012 R2)上可以使用。结果是http 404.0,处理程序:StaticFile。我通过将ExtensionlessUrl处理程序添加到web.config来解决了这个问题:
idx = find([stats.Type] == 1:10); % Does not work
% must use this
temp = [];
for aa = 1:10
idx = find([stats.Type] == aa);
temp = horzcat(idx,temp);
end
[stats(temp).Stime]
<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
有效,但是name="ExtensionlessUrl-Integrated-4.0"
无效。