Asp.net 404针对非aspx页面的重定向

Asp.net 404针对非aspx页面的重定向,asp.net,iis,redirect,error-handling,Asp.net,Iis,Redirect,Error Handling,我正在使用下面的web.config代码将丢失页面的请求重定向到404错误处理页面: <customErrors mode="On" defaultRedirect="404.aspx" redirectMode="ResponseRewrite"> <error statusCode="404" redirect="404.aspx"/> </customErrors> 当我查找诸如“missing.aspx”之类的页面时,它可以正常工作,但对于没

我正在使用下面的web.config代码将丢失页面的请求重定向到404错误处理页面:

<customErrors mode="On" defaultRedirect="404.aspx" redirectMode="ResponseRewrite">
  <error statusCode="404" redirect="404.aspx"/>
</customErrors>

当我查找诸如“missing.aspx”之类的页面时,它可以正常工作,但对于没有“.aspx”扩展名的页面(如“missing.asp”或只是“missing”)它就不起作用。当它不工作时,它只加载一个标准的IIS7.5错误页面

我做错了什么?我正在使用.NET4。我注意到其他人问同样的问题,但他们没有得到答案


谢谢

原因是非ASPX扩展永远不会进入ASP.NET处理程序;您看到的这些错误来自IIS。web.config中的system.webServer下有一个单独的部分httpErrors,您需要对其进行配置以处理这些错误。有关更多信息,请参阅

链接中的示例:


As声明这是因为非asp.net文件不调用asp.net处理程序。强制asp.net处理程序对所有请求进行操作的简单方法是在web.config中设置以下内容

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
</system.webServer>

这会告诉IIS为所有请求(如.html、.jpg、.css、.js等)运行所有托管模块。这通常是不受欢迎的,因为它只会引入额外的处理和延迟


另一个尝试选项(比上面更简洁)作为答案发布在这里:

将以下内容添加到Web.config:



尝试删除
redirectMode=“ResponseRewrite”
我尝试使用此问题中的信息,但无法继续。你能帮我看一下吗?我有一个网站项目,我在下面添加了代码,但是现在没有运行错误处理页面,而是显示了页面的源代码(当尝试加载一个不存在的aspx页面时)<代码>这是更好的答案,因为它不依赖于通过ASP.NET管道发送所有请求@鱼鹰-这是因为errorMode被设置为“DetailedLocalOnly”,这个设置说,嘿,如果请求来自托管文件的机器,请提供一些详细信息,否则,显示我定义的500页。这在调试场景中很有用。您可以将此设置更改为“自定义”,它将始终显示友好的错误消息。这不起作用。当问题是关于404错误时,为什么要添加505?@JGallardo在本地不起作用,但应该在服务器上起作用。我想你可以找到/替换“404”,或者这对你来说太多了?@McGarnagle我显然用404替换了。然后我将它添加到远程服务器,但仍然无法工作。我尝试使用您编写的内容,但无法使其工作。你介意看看我爱你吗。。。这么多加里S。
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
</system.webServer>