缺少Routedata DataTokens
-
01-10-2019 - |
题
我正在通过添加给出错误ID的路由数据值来处理Application.onerror向控制器操作的错误ID来处理ASP.NET MVC中的错误:
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"];
在我的本地计算机上,它运行良好,但是在服务器上,我尝试过的错误关键不会传递。
有什么可能的原因?
一个新的观察结果,当网站运行Web服务器时:
- 如果我从Web服务器本身上的浏览器访问,路由数据已传输好
- 如果我从另一台计算机访问,路由数据是 不是 转移
解决方案 2
我发现:在Web.config中设置了以下内容:
<system.webServer> <httpErrors errorMode="Custom">
这导致操作被执行两次:第一次 和 错误关键,但第二个决定时间 没有 错误关键。我把它更改为
<system.webServer> <httpErrors errorMode="Detailed">
动作只执行一次, 和 错误关键。
其他提示
我从来没有尝试过以这种方式使用路由数据,您可能想研究一下
httpcontext.items [“ errorkey”
这些物品范围为您的要求。
您可能还想查看控制器上找到的tempdata [“ errorkey”]:
至于路由数据中的值,请查看 routedata.values [“ errorkey”
不隶属于 StackOverflow