Отсутствуют RouteData DataTokens - PullRequest
       27

Отсутствуют RouteData DataTokens

0 голосов
/ 07 сентября 2010

Я обрабатываю ошибки в 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(context);

И затем чтение в контроллере / действие:

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

На моей локальной машине все работает нормально, но на серверах, которые я пробовал, errorKey не передается.

Какие могут быть возможные причины для этого?


Новое наблюдение, когда на сайте работает веб-сервер:

  • Если я захожу из браузера на самом веб-сервере, данные маршрута передаются нормально
  • Если я захожу с другого компьютера, данные маршрута не переданы

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Я никогда не пытался использовать данные о маршруте таким образом, вы могли бы вместо этого изучить это

HttpContext.Items [ "errorKey"]

элементы находятся в пределах вашего запроса.

Вы также можете посмотреть TempData ["errorKey"], найденный на контроллере:

ASP.NET TempData сохраняется между запросами

Что касается значений в данных маршрута, взгляните на RouteData.Values ​​["errorKey"]

1 голос
/ 09 сентября 2010

Я нашел причину: В web.config было установлено следующее:

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

, при котором действие было выполнено дважды: первый раз с errorKey, но второй и решающий момент без errorKey Я изменил это на

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

и действие было выполнено только один раз, с ключом ошибки.

...