ASP.NET MVC 错误处理 - 删除 aspxerrorpath

Posted

技术标签:

【中文标题】ASP.NET MVC 错误处理 - 删除 aspxerrorpath【英文标题】:ASP.NET MVC Error Handling - Remove 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"; " 【参考方案1】:

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

【讨论】:

警告:只有在重定向到服务器上的文件而不使用 MVC 路由到错误页面时,才能使用 ResponseRewrite:***.com/a/3770265/188740【参考方案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】:

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

    您可以在 web.config 中编辑部分,并编写默认链接以在错误时重定向,还可以为不同的错误指定不同的链接,例如 <error statusCode="403" redirect="NoAccess.htm" /> 您可以为控制器/操作使用 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 并且您完全安全。

以上是关于ASP.NET MVC 错误处理 - 删除 aspxerrorpath的主要内容,如果未能解决你的问题,请参考以下文章

[Asp.net mvc]实体更新异常:存储区更新插入或删除语句影响到了意外的行数。实体在加载后可能被修改或删除。

ASP.NET MVC 处理错误

处理对 ASP.NET MVC 操作的 CORS 预检请求

ASP.NET MVC5 删除 API 错误的 html 响应

ASP.NET MVC 404 错误处理 [重复]

ASP.NET MVC中的错误处理