显示自定义ASP.. NET错误页,而不重写URL
Display custom ASP.NET error page without rewriting URL
目前正在为我的网站在ASP.NET错误页面工作。如果服务器无法找到请求的页面,我使用web配置文件将用户重定向到错误页面。下面是我在配置文件中使用的customErrors标签:
<customErrors mode="On" defaultRedirect="~/ErrorPages/Error.aspx">
<error statusCode="404" redirect="~/ErrorPages/Error.aspx"/>
</customErrors>
它目前正在工作,但我的问题是,我不希望用户看到我的错误页面的URL如下所示:
/MySite/ErrorPages/Error.aspx ? aspxerrorpath =/MySite ImaginaryPage.aspx
我期待像谷歌一样的东西:谷歌错误页面
有没有办法做到这一点没有Javascript?
这篇文章可能会对你有所帮助,下面是其中的一个片段:http://blog.dmbcllc.com/aspnet application_error -检测- 404 s/
void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex is HttpException)
{
if (((HttpException)(ex)).GetHttpCode() == 404)
Server.Transfer("~/Error404.aspx");
}
}
真正的关键部分是,如果你想保持相同的URL被请求,那么Response.Redirect
不是你想要的,因为它返回到客户端发出第二个请求,从而改变URL。您希望保持在服务器上,因此适当的调用将是Server.Transfer
。这个特定的事件处理程序进入到您的Global.asax.cs文件中,并且该方法将为与您的应用程序上下文中关联的任何404引发。
不幸的是,它将跳过您的customErrors
配置部分并依赖于更程序化的方法,然而从维护的角度来看,代码相当简单。
你可以直接添加:redirectMode="ResponseRewrite"
这样的<customErrors defaultRedirect="Error404.aspx" mode="RemoteOnly"
redirectMode="ResponseRewrite" >
<error statusCode="404" redirect="Error404.aspx" />
</customErrors>
相关文章:
- 阅读重写URL-javascript
- css中的url用angular重写
- 可以在页面加载后使用javascript/Jquery重写/修改URL
- URL重写Node js-动态URL
- 通过特定的Web.Config目录提供URL重写
- 需要帮助使用JavaScript/Jquery重写url
- 为什么 Angular 将 URL 片段 #foo 重写为 #/foo 以及如何避免这种情况
- 无需 htaccess 即可重写 URL(无多页)
- 如何重写 URL,使其看起来像用户不在某个地方
- 使用 JQUERY 和正则表达式重写 URL
- 更改位置时重写URL
- PHP/Javascript,重写URL中的真实文件名
- 如何为JavaScript重写URL结构
- 注入的Javascript没有在UiWebView中重写URL
- 在Firefox插件中选择性地重写URL
- 显示自定义ASP.. NET错误页,而不重写URL
- 如何重写url以删除问号
- 在AngularJS工厂中重写URL
- Javascript重写URL中的宽度、高度
- facebook如何在Chrome中重写url &Firefox