【发布时间】:2013-01-04 14:43:16
【问题描述】:
好的,所以我在http://dev.myapplication.com 本地开发我的应用程序(使用DNS 的主机文件),然后我有http://test.myapplication.com 和http://www.myapplication.com。
在 IIS 7(相同版本,开发测试和实时版本)中,我打开了“错误页面”并编辑了 404 状态代码以转到路径“/en/404.mvc”。这在本地工作,我可以导航到产生 404 页面的http://dev.myapplication.com/non-existent-url.mvc。
但是,如果我导航到 http://dev.myapplication.com/non-existent-url(即静态地址),它会显示 IIS 404 页面并说它是由静态文件处理程序而不是我的 mvc 文件处理程序处理的。
我对为什么会发生这种情况感到困惑,因为它成功地修改了我的 web.config,这反过来又允许它在测试和生活中工作,而不是在本地工作。即http://www.myapplication.com/404 将显示我自定义的 404 页面
【问题讨论】:
-
您的本地应用程序池是否设置为集成模式?
-
不,经典,每个环境都设置为经典
-
啊——你有通配符映射来通过 aspnet_isapi 进程运行所有请求吗?集成模式可以解决这个问题,但您必须在经典模式下进行一些额外的跳跃。这 3 个网站是否都托管在同一台服务器上?
-
是的,我刚刚查看了所有处理程序映射,它们在每台服务器上都是相同的。我必须添加 *.mvc 以使其命中 aspnet_isapi,但其他所有内容都保留为默认值。我有 3 台服务器,开发、测试和直播,但它在开发上不起作用。我能想到的唯一区别是我在本地运行的是 Windows 7,而另外两台服务器是 Windows Server 2008
-
您可能正在运行不同版本的 IIS。 Windows 7 运行 IIS 7.5,Windows Server 2008 运行 IIS 7,Windows Server 2008 R2 运行 IIS 7.5。我会根据答案中的链接添加通配符映射
标签: c# iis http-status-code-404