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
(或RemoteOnly
)customError
,但不要在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]实体更新异常:存储区更新插入或删除语句影响到了意外的行数。实体在加载后可能被修改或删除。