Используйте IRouteConstraint или ActionFilterAttribute при проверке данных сеанса по данным маршрута - PullRequest
2 голосов
/ 23 февраля 2011

Я недавно внедрил RouteConstraint, чья обязанность - сопоставить пользовательское значение маршрута с некоторыми данными модели, находящимися в сеансе.

Я обнаружил, что сеанс является нулевым для routeDirectionof IncomingRequest.

  1. Не настроен ли сеанс до тех пор, пока контроллер не будет создан / инициализирован?
  2. Если это так, то этот тип функции лучше подходит для фильтра, применяемого наУровень контроллера?
  3. Есть ли другие жизнеспособные варианты?

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 17 апреля 2015

Мне не ясно, что именно вы пытаетесь реализовать (перенаправление на страницу входа или отображение какого-либо сообщения), поэтому я не могу дать какое-либо хорошее альтернативное решение, но могу сказать вам, что сеанс недоступен, когда выполняется IRouteConstraint. оценивается, потому что конвейер маршрутизации происходит до загрузки сеанса. Например. при маршрутизации может отображаться страница, которая вообще не требует сессии.

1 голос
/ 27 сентября 2012

Поскольку это должно происходить практически при каждом вызове, я, вероятно, обработаю OnActionExecuting контроллера (или базового контроллера), а затем установлю ActionExecutingContext.Result для возврата нового RedirectToRouteResult с RouteValueDictionary, который содержит необходимые значения.Это также может быть заключено в ActionFilter (контроллер реализует IActionFilter).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...