asp.net – web.config不转发到非.aspx页面上的404错误页面

前端之家收集整理的这篇文章主要介绍了asp.net – web.config不转发到非.aspx页面上的404错误页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目的

我希望缺少的页面的所有网址转发到我的404页面,这是我的根目录404error.aspx

问题

到目前为止,只有具有.aspx的URL才能正常工作.例如,如果输入4error.aspx,您将被重定向错误页面.

  1. /404error.aspx?aspxerrorpath=/4error.aspx

背景

我不是.NET开发人员,所以我接手了这个使用经典的.aspx的项目.所以我没有使用任何Microsoft产品在模板或框架中构建任何这个.我只是在Sublime文本中编码.

我已经研究了

> 404 Redirecting for non aspx pages – 答案不完整或不工作.
> 404 does not append aspxerrorpath for non aspx pages – 但这是有点不同于我想要的.

我看到我在Google上发现的许多文章,但没有一个完整的例子,实际上有效.

这是我在web.config中开始的整个代码

web.config中

  1. <configuration>
  2. <system.web>
  3. <customErrors mode="RemoteOnly" defaultRedirect="~/404error.aspx" />
  4. <globalization
  5. fileEncoding="utf-8"
  6. requestEncoding="utf-8"
  7. responseEncoding="utf-8"
  8. culture="en-US"
  9. uiCulture="de-DE"
  10. />
  11. </system.web>
  12. </configuration>

我也从Microsoft发现了这个例子(404error.aspx是我的修改)
http://msdn.microsoft.com/en-us/library/vstudio/bb397417%28v=vs.100%29.aspx

web.config(2)

  1. <configuration>
  2. <appSettings/>
  3. <connectionStrings/>
  4. <system.web>
  5. <compilation debug="true" />
  6.  
  7. <!-- Turn on Custom Errors -->
  8. <customErrors mode="On"
  9. defaultRedirect="/404error.aspx">
  10. <error statusCode="404" redirect="/404Error.aspx"/>
  11. </customErrors>
  12.  
  13. </system.web>
  14. </configuration>

这也没有处理没有.aspx的页面

然后我尝试了这个例子

web.config(3)

  1. <?xml version="1.0"?>
  2. <configuration>
  3. <system.web>
  4. <customErrors mode="RemoteOnly" defaultRedirect="~/404error.aspx" />
  5. <error statusCode="404" redirect="~/404error.aspx" />
  6. <globalization
  7. fileEncoding="utf-8"
  8. requestEncoding="utf-8"
  9. responseEncoding="utf-8"
  10. culture="en-US"
  11. uiCulture="de-DE"
  12. />
  13. </system.web>
  14. <system.webServer>
  15. <httpErrors>
  16. <remove statusCode="401" subStatusCode="-1" />
  17. <remove statusCode="403" subStatusCode="-1" />
  18. <remove statusCode="404" subStatusCode="-1" />
  19. <remove statusCode="500" subStatusCode="-1" />
  20. <!-- full url when responsemode is Redirect -->
  21. <error statusCode="401" path="http://foo.com/default.htm" responseMode="Redirect" />
  22. <!-- local relative path when responsemode is ExecuteURL -->
  23. <error statusCode="403" path="~/404error.aspx" responseMode="ExecuteURL" />
  24. <error statusCode="404" path="~/404error.aspx" responseMode="ExecuteURL" />
  25. <error statusCode="500" path="~/404error.aspx" responseMode="ExecuteURL" />
  26. </httpErrors>
  27. <modules runAllManagedModulesForAllRequests="true"/>
  28. </system.webServer>
  29. </configuration>

显然,我必须改变404页以外的路径,但我只想测试这些错误.最后一个web.config工作更糟糕.

你能告诉我需要修改内容吗?我会欣赏一个完整的<配置>因为我一直困惑什么在哪里.

编辑1

我读过很多开发人员建议将其作为HTML页面.所以现在我的页面404.html这是我更新的web.config

  1. <configuration>
  2. <system.web>
  3. <customErrors mode="On"
  4. redirectMode="ResponseRewrite">
  5. <error statusCode="404"
  6. redirect="~/404.html"/>
  7. </customErrors>
  8. <globalization
  9. fileEncoding="utf-8"
  10. requestEncoding="utf-8"
  11. responseEncoding="utf-8"
  12. culture="en-US"
  13. uiCulture="de-DE"
  14. />
  15. </system.web>
  16.  
  17. <system.webServer>
  18. <httpErrors errorMode="Custom"
  19. defaultResponseMode="File">
  20. <remove statusCode="404"/>
  21. <error statusCode="404"
  22. path="~/404.html"/>
  23. </httpErrors>
  24. </system.webServer>
  25. </configuration>

解决方法

您需要配置< httpErrors>元件.这将配置静态文件和服务器页面错误页面.

您的第三次尝试“web.config(3)”和“编辑1”几乎在那里.问题是您不能在这里使用应用程序相对路径(例如:“〜/ 404.html”),它们必须与站点根目录相对(例如:“/404.html”).

  1. <?xml version="1.0"?>
  2. <configuration>
  3. <system.webServer>
  4. <httpErrors>
  5. <remove statusCode="401" subStatusCode="-1" />
  6. <remove statusCode="403" subStatusCode="-1" />
  7. <remove statusCode="404" subStatusCode="-1" />
  8. <remove statusCode="500" subStatusCode="-1" />
  9. <!-- full url when responsemode is Redirect -->
  10. <error statusCode="401" path="http://foo.com/default.htm" responseMode="Redirect" />
  11. <!-- local relative path when responsemode is ExecuteURL -->
  12. <error statusCode="403" path="/404error.aspx" responseMode="ExecuteURL" />
  13. <error statusCode="404" path="/404error.aspx" responseMode="ExecuteURL" />
  14. <error statusCode="500" path="/404error.aspx" responseMode="ExecuteURL" />
  15. </httpErrors>
  16. </system.webServer>
  17. </configuration>

猜你在找的asp.Net相关文章