我在Windows Server 2008上有一个IIS7.5网站,部署了一个ASP.NET MVC2网站。该网站是在Visual Studio 2008中构建的,面向.NET 3.5,并且IIS 5.1已成功配置为运行它,用于本地测试。
但是,每当我尝试导航到IIS7中运行的页面时,都会收到404错误。
我检查了以下内容:
修改
好的,所以我们已经安装了世界上最简单的MVC应用程序(在Visual Studio中创建新的MVC2项目时创建的应用程序),我们仍然可以在我们尝试访问的任何页面上获取404 - 例如
<my_server>/Home/About
将生成404。
任何想法都将不胜感激!
答案 0 :(得分:14)
这通常是由web.config中的以下缺失引起的:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
答案 1 :(得分:10)
您只有1页的问题或整个网站无法正常工作吗?
A)1页
B)整个网站
我假设您正在使用Windows Server - 请检查IIS中是否启用了ASP.NET - 默认情况下它是禁用的。我相信。
您可以使用MvcDiagnostics页面检查是否所有dll都已正确部署。
您是否在IIS7 集成模式中运行? IIS7的经典模式不会自动将无扩展名URL映射到ASP.NET(很像IIS6)
确保您的 Web.config 标记配置正确。
答案 2 :(得分:8)
我们最终通过导出工作服务器的IIS配置并将其与我们的服务器进行比较来解决此问题。
这是一个非常模糊的设置,已从默认设置更改。
IIS ROOT→请求过滤→文件扩展名选项卡→编辑功能设置→允许未列出的文件扩展名
这应该勾选。
可以在IIS级别或站点级别设置。
答案 3 :(得分:3)
很高兴解决了你的问题。其他研究此问题的人应该注意无扩展名的URL修补程序:http://support.microsoft.com/kb/980368
答案 4 :(得分:2)
结帐KB 2023146是否适用于您的方案。还可以尝试直接请求控制器操作:/yoursitename/home/index
答案 5 :(得分:2)
如果此处没有其他解决方案解决您的问题,请检查您是否有
Global.asax中
在您网站上的文件。这解决了我的问题。
答案 6 :(得分:1)
显然,这可能有很多不同的原因。
对我们来说,问题是DNS条目是为两个IP地址配置的,但IIS配置只会侦听其中一个IP地址。所以我们得到了不可预测的结果,有时它会工作,有时一些文件(css等)不会加载,有时整个页面都不会加载。
答案 7 :(得分:1)
对我来说,这完全是关于在服务器上安装.NET Framework 4.6.1(我的应用程序是针对该版本)
答案 8 :(得分:0)
如果你的绑定不正确,你也会得到这个。如果您没有www或子域,它将返回404。
答案 9 :(得分:0)
运行我的MVC4站点并将应用程序池设置为ASP.NET 4.0和Classic管道时遇到此问题,即使扩展处理程序已在我的web.config中设置并在IIS中正确显示。该网站在Integrated Pipeline中工作,所以我知道这是一个配置问题,但我无法确定它。我终于发现在ISAPI和CGI限制设置中为服务器禁用了ASP.NET 4。我启用了ASP.NET 4.0,它运行良好。
答案 10 :(得分:0)
除了检查您是否在集成管道模式下运行外,还要确保您的应用程序池设置为使用.NET!我最近遇到了这个问题,当我进入检查应用程序池设置时,我发现它已被设置为&#34; No Managed Code。&#34;糟糕!
答案 11 :(得分:0)
My Hosting公司通过这样做为我解决了这个问题(我当然删除了原来的密码值)。
<system.webServer>
<security>
<authentication>
<anonymousAuthentication password="<password>" />
</authentication>
</security>
</system.webServer>
答案 12 :(得分:0)
通常,当出现路由问题时,我会遇到此问题。我将工作与非工作进行比较以解决它。
今天然而我意外地在IIS中创建了一个虚拟目录。
必须是应用程序,右键单击虚拟目录(带有文件夹图标) - &gt;转换为应用程序:
答案 13 :(得分:0)
Don't use runAllManagedModulesForAllRequests。您想让IIS处理图像等资源。
<system.webServer> <!-- Rather do NOT use this -->
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
相反,添加MVC路由模块
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>