【问题标题】:How to 'retrieve' browser-typed 404 url and make it auto redirect on c#如何“检索”浏览器键入的 404 url​​ 并使其在 c# 上自动重定向
【发布时间】:2012-09-20 09:58:29
【问题描述】:

我有一个 c# web 应用程序,即http://mysite.com

用户打开他的浏览器并输入http://mysite.com/anywrongpath

我想要做的是获取“确切”网址( /anywrongpath )然后将该用户重定向到即 /MainPage.aspx

我想我可以通过以下方式处理重定向:

protected void Application_Error(object sender, EventArgs e)
{
    HttpException httpException = Server.GetLastError() as HttpException;
    if (httpException.ErrorCode == 404)
       Response.Redirect("/MainPage.aspx");
}

但是,我不知道如何处理键入的 url 的检索过程。我对“Sessions”、“Request.ServerVariables”、“Request.Url”等进行了研究,但我无法解决问题。

我愿意提供任何解决方法的想法,如果您提供微小的代码示例,我真的很高兴,thanx

穆拉特

【问题讨论】:

  • Request.Url 有什么问题?
  • 我不确定您是否已经这样做了,但您可能想要设置自定义 404 页面。您可以将重定向放在那里,并且很可能此时也捕获 URL。这个链接讨论了编辑 web.config 来做到这一点。 serverfault.com/questions/68137/…
  • 如果用户通过单击某物从 /mypage1 转到 /mypage2,是的,我可以通过 Response.Redirect("server-error.aspx?404&" & Request.Url.ToString()) 获取上一个 url 但是当用户通过手动输入浏览器进行“首次访问”时,我不能。

标签: c# redirect http-status-code-404


【解决方案1】:

编辑您的 web.config 文件并将类似的内容放在 system.web 部分

<customErrors mode="RemoteOnly" defaultRedirect="Error.aspx">
    <error statusCode="404" redirect="MainPage.aspx" />
</customErrors>

当您的用户键入类似 mysite.com/non-existant 的地址时,IIS 会将他重定向到 mysite.com/MainPage.aspx?aspxerrorpath=/non-existant

这样就可以得到Request.QueryString["aspxerrorpath"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2021-11-13
    • 2012-12-19
    相关资源
    最近更新 更多