C# 为什么我的应用程序在我的开发环境中返回IIS 404页面,而不是测试或生产环境?

C# 为什么我的应用程序在我的开发环境中返回IIS 404页面,而不是测试或生产环境?,c#,iis,http-status-code-404,C#,Iis,Http Status Code 404,好的,我在本地为DNS使用hosts文件开发我的应用程序,然后我有和 在iis7的同一版本devtest和live中,我打开了“错误页面”,并编辑了404状态代码以转到路径“/en/404.mvc”。这在本地工作,我可以导航到生成404页面的位置 但是,如果我导航到一个静态地址,它会显示IIS404页面,并说它是由静态文件处理程序而不是我的mvc文件处理程序处理的 我对为什么会发生这种情况感到困惑,因为它成功地修改了我的web.config,从而允许它在测试和现场工作,而不是在本地工作。i、 e

好的,我在本地为DNS使用hosts文件开发我的应用程序,然后我有和

在iis7的同一版本devtest和live中,我打开了“错误页面”,并编辑了404状态代码以转到路径“/en/404.mvc”。这在本地工作,我可以导航到生成404页面的位置

但是,如果我导航到一个静态地址,它会显示IIS404页面,并说它是由静态文件处理程序而不是我的mvc文件处理程序处理的


我对为什么会发生这种情况感到困惑,因为它成功地修改了我的web.config,从而允许它在测试和现场工作,而不是在本地工作。i、 e.将显示我定制的404页面

您需要一个通配符映射来通过aspnet_isapi运行所有请求-本文对此进行了很好的解释:

此外,请检查您的web.Config是否具有以下设置:

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

您的本地应用程序池是否设置为集成模式?不,classic,它在每个环境上都设置为classic啊-您是否有一个通配符映射来运行通过aspnet_isapi进程的所有请求?集成模式解决了这个问题,但在经典模式下你必须做一些额外的跳跃。这三个站点是否都位于同一台服务器上?是的,我刚刚查看了所有处理程序映射,它们在每台服务器上都是相同的。我不得不添加*.mvc使其命中aspnet_isapi,但其他所有内容都保留为默认值。我有3台服务器:dev、test和live,但它在dev上不起作用。我能想到的唯一区别是,我在本地运行的是windows7,而另外两台服务器是windowsserver2008。您可能运行的是不同版本的IIS。Windows 7运行IIS 7.5,Windows Server 2008运行IIS 7,Windows Server 2008 R2运行IIS 7.5。我会根据我的回答中的链接添加一个通配符映射,我已经设置好使用它,但是它只会直接给我StaticFileHandler提供404服务。在某个地方有偏好的顺序吗?不要这样认为-你可能不希望它们都是主动的。最近我运行的是Windows 8,因此无法快速查看IIS7.5中的设置-您需要确保处理程序不会确保文件存在。Sok,我甚至从IIS中删除了StaticFile处理程序模块,这导致以下内容被添加到我的web.config中。。但是我还是遇到了同样的问题有什么理由把它设置为经典而不是集成的吗?我知道它没有回答这个问题,但它应该可以解决这个问题。我们使用StructureMap进行依赖项注入,当打开integrated时,我们会得到以下StructureMap异常:StructureMap.StructureMap异常:StructureMap异常代码:202没有为PluginFamily My.Namespace.IMyInterface定义默认实例