Отсутствуют RouteData DataTokens
Я обрабатываю ошибки в ASP.NET MVC, отправляя идентификатор ошибки из Application.OnError в действие контроллера, добавляя значение данных маршрута, которое дает идентификатор ошибки:
Global.asax.cs / OnError:
var routeData = new RouteData (); routeData.DataTokens.Add ("errorKey", errorId); var context = new RequestContext (new HttpContextWrapper (Context), routeData); errorController.Execute (контекст);
А потом читаем это в контроллере / action:
object errorKey = RouteData.DataTokens ["errorKey"];
На моей локальной машине все работает нормально, но на серверах, которые я пробовал, errorKey не передается.
Какие могут быть возможные причины для этого?
Новое наблюдение, когда на сайте работает веб-сервер:
- Если я захожу из браузера на самом веб-сервере, данные маршрута передаются нормально
- Если я захожу с другого компьютера, данные маршрута не передаются
2 ответа
Я нашел причину: в web.config было установлено следующее:
что заставило действие быть выполненным дважды: первый раз с errorKey, но второй и решающий момент без errorKey. Я изменил это на
и действие было выполнено только один раз, с errorKey.
Я никогда не пытался использовать данные о маршруте таким образом, вы могли бы вместо этого изучить это
HttpContext.Items["errorKey"]
элементы ограничены вашим запросом.
Вы также можете посмотреть на TempData["errorKey"], найденный на контроллере:
ASP.NET TempData сохраняется между запросами
Что касается значений в данных маршрута, взгляните на RouteData.Values ["errorKey"]