【问题标题】:ASP.NET MVC Error Handling - Remove aspxerrorpathASP.NET MVC 错误处理 - 删除 aspxerrorpath
【发布时间】:2011-02-27 15:35:14
【问题描述】:

我正在处理我的 MVC 应用程序中的一些错误处理,我想将 asperrorpath 更改为不会泄露我正在使用 .NET 的事实...类似于 @987654322 @

谁能给我一些关于如何改变它的方向?

【问题讨论】:

  • 你好rockinthesixstring。你找到答案了吗?我也想做这个!任何人?任何人? +1
  • 抱歉,你是在自欺欺人,我认为知道一个站点是否正在运行 asp.net 并非易事。 asp.net 和 mvc 都具有非常强的迹象,不需要花费太多精力就能弄清楚,这是内置于处理请求的方式中的,因此您无需进行任何配置或其他更改来隐藏它跨度>
  • @MystereMan,不想隐藏它,只是不希望它完全明显。
  • 我使用 JavaScript,例如 "if (location.search != "") { window.location.href = "/404.html"; } "

标签: asp.net asp.net-mvc error-handling


【解决方案1】:

redirectMode="ResponseRewrite" 添加到 customErrors 部分。这对我有用。

【讨论】:

【解决方案2】:

我的 wprk 正在使用

route.MapRoute("NotFound", "{*url}", new {controller = "Home", action = "NotFound"})

在最底部,我在HomeController 中有NotFound 操作。 它只会捕获所有其他 url。

【讨论】:

  • 不。我不关心 URL(我已经处理好了)......但是 returnUrl 的查询字符串目前是?asperrorpath=http...,每个人都知道我正在使用.net(并不是说这是一件坏事)。我只想将项目更改为?go=http...。我已经完成了。我将在当天晚些时候发布我的解决方案。
  • 是的,我发现了很多技巧,这是我认为最好的。如果使用这种方式,你需要打开On(或RemoteOnlycustomError,但不要在web.config中定义任何404重定向等,"{*url}"会捕获它。我正在使用 MVC 3。不确定以前的版本。我永远不会得到?asperrorpath=
【解决方案3】:

您可以通过多种方式解决问题。这取决于你想要什么。

  1. 您可以在 web.config 中编辑部分,并编写默认链接以在错误时重定向,还可以为不同的错误指定不同的链接,例如 <error statusCode="403" redirect="NoAccess.htm" />
  2. 您可以为控制器/操作使用 HandleError 属性。你可以阅读它here

【讨论】:

    【解决方案4】:

    通过提供自定义查询字符串,您的 aspxerrorpath 将不会显示。

    查看此链接的原始答案: how to prevent “aspxerrorpath”

    【讨论】:

    • 是这样,但是假设您想在 404 上重定向到您网站的主页 - 如果您在 web.config 中指定 redirect="~/?",您的 URL 将看起来比如http://localhost:51437/?——有点丑,可能不符合你项目的要求。
    【解决方案5】:

    只需将虚拟查询字符串添加到您的 .htm 页面,如下所示。

    <customErrors mode="On" defaultRedirect="errorpage.htm?error=1" >
          <error statusCode="404" redirect="filenotfound.htm?error=1" />
    </customErrors>
    

    检查fiddler,asperrorpath查询字符串不再出现,errorpage.htm的referrer完全干净。

    【讨论】:

    • 如果您重定向到 MVC .cshtml 页面而不是普通的 HTML 页面怎么办? MVC 框架默认使用.cshtml 文件。另外,如果您设置了基于属性的路由怎么办?
    • 此解决方案适用于您无法或未通过代码处理的错误。这是出现 asperrorpath 查询字符串的时候。主要目的是不让嗅探器发现您正在使用的后端技术。您始终可以将您的用户重定向到一个控制器操作,该操作返回一个错误视图,其中没有出现 asperrorpath 并且您完全安全。
    猜你喜欢
    • 2010-09-16
    • 2018-02-27
    • 2011-06-10
    • 2014-03-26
    • 2012-10-04
    • 2013-02-24
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多