使用
抓取当前网址非常简单HttpContext.Current.Request.Url.ToString();
事实上,这是this very similar question.的公认答案 但是,我已经实现了应用程序范围的错误处理,并且有一个ErrorController可以生成在有未处理的异常时发送给我们的电子邮件。如果我在错误控制器中实现上面的代码片段,我得到的URL就像
http://.../Error/GenericError?aspxerrorpath=/Controller/ErrorProneAction
如何获取实际引发错误的网页的网址?也就是说,更像是
http://.../Controller/ErrorProneAction
答案 0 :(得分: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;
}
答案 1 :(得分:1)
根据你的评论 - 你的global.asax中有void Application_OnError(object sender, EventArgs e)
这样的函数吗?如果是这样,那么您应该能够获得您正在寻找的信息。
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。