1

获取当前 URL 很简单

HttpContext.Current.Request.Url.ToString();

事实上,这是对这个非常相似的问题的公认答案。 但是,我已经实现了应用程序范围的错误处理,并且有一个 ErrorController 可以在出现未处理的异常时生成电子邮件,这些电子邮件会发送回给我们。如果我在错误控制器中实现上面的代码片段,我得到的 URL 类似于

http://.../Error/GenericError?aspxerrorpath=/Controller/ErrorProneAction

如何获取实际引发错误的页面的 url?也就是说,更像是

http://.../Controller/ErrorProneAction
4

2 回答 2

1

根据您的评论-void Application_OnError(object sender, EventArgs e)您的 global.asax 中是否有类似的功能?如果是这样,那么您应该能够获得您正在寻找的信息。

protected void Application_OnError(object sender, EventArgs e)
{
    var app = (MvcApplication)sender;
    var context = app.Context;
    string path = context.Request.PathWithQueryString;
    ...

给你类似的东西/controllerOrRoute/action?query=val。或者,您可以使用 RawUrl 或 Url 属性来获得基本相同的内容。我刚刚启动了我的应用程序以查看它生成的内容,看起来这就是您所要求的。

编辑:我应该注意我为 MVC3 测试了上述内容。

于 2012-11-20T17:28:02.507 回答
1

请参阅此博客文章:

http://blog.gauffin.org/2011/11/how-to-handle-errors-in-asp-net-mvc/

如果您将参数传递给您的ActionResult,这将采用aspxerrorpath查询字符串值的值。

public ActionResult NotFound(string url)
{
  var originalUri = url ?? Request.QueryString["aspxerrorpath"] ?? Request.Url.OriginalString;
}
于 2012-11-20T15:34:25.103 回答