我在ASP.NET MVC4中使用自定义错误处理,以便在捕获404状态时重定向到自定义错误页面。
代码如下
<customErrors mode="On">
<error statusCode="404" redirect="~/Error/NotFoundError"/>
</customErrors>
public ActionResult NotFoundError()
{
string originalUrl = Request.Url.AbsolutePath;
Errormodel model = new Errormodel();
model.URL = originalUrl ;
return View(model);
}
请注意,我在Request对象上使用Request.Url.AbsolutePath属性来获取URL。
问题是我想在重定向之前获取我定位的原始网址,以便在我的视图中显示它,而是我将网址发送到自定义错误页面。
视图中的示例
您请求找不到的http://testproject/test。
如何获取原始目标网址而不是新的自定义错误网页网址?
答案 0 :(得分:0)
您可以查看此答案 ASP.NET MVC 404 Error Handling
基本上它使用函数Application_EndRequest事件在转到新操作之前添加任何信息
public class MvcApplication : HttpApplication
{
protected void Application_EndRequest()
{
if (Context.Response.StatusCode == 404)
{
Response.Clear();
var rd = new RouteData();
rd.DataTokens["area"] = "AreaName"; // In case controller is in another area
rd.Values["controller"] = "Errors";
rd.Values["action"] = "NotFound";
IController c = new ErrorsController();
c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
}
}
}