缺少RouteData DataTokens

时间:2010-09-07 14:19:04

标签: asp.net-mvc error-handling routedata

我正在处理ASP.NET MVC中的错误,方法是将Application.OnError中的错误ID发送到控制器操作,方法是添加一个给出错误ID的路由数据值:

的Global.asax.cs /的OnError:

var routeData = new RouteData();
routeData.DataTokens.Add("errorKey", errorId);
var context = new RequestContext(new HttpContextWrapper(Context), routeData);
errorController.Execute(context);

然后在控制器/动作中读取它:

object errorKey = RouteData.DataTokens["errorKey"];

在我的本地计算机上它运行正常,但在我尝试过的服务器上没有传递errorKey。

可能的原因是什么?


网站运行网络服务器时的新观察:

  • 如果我从Web服务器本身的浏览器访问,路由数据将正常传输
  • 如果我从其他计算机访问,则路径数据已传输

2 个答案:

答案 0 :(得分:2)

我从未试图以这种方式使用路线数据,你可能想要查看这个

HttpContext.Items [ “errorKey”]

这些项目的范围是您的请求。

您可能还想查看控制器上的TempData [“errorKey”]:

ASP.NET TempData persists between requests

至于路线数据中的值,请查看 RouteData.Values [“errorKey”]

答案 1 :(得分:1)

我找到了原因: 在web.config中设置了以下内容:

<system.webServer>
<httpErrors errorMode="Custom">

导致操作执行两次:第一次使用使用errorKey,但是第二次决定没有 errorKey。 我把它改成了

<system.webServer>
<httpErrors errorMode="Detailed">

并且操作仅执行一次,使用 errorKey。