настраиваемый контроллер - PullRequest
2 голосов
/ 08 августа 2011

Я реализовал фабрику пользовательских контроллеров в ASP MVC3 с autofac для достижения очень простого управления плагином, производным от DefaultControllerFactory.

В переопределенном методе GetControllerType (RequestContext requestContext, string controllerName) я делаю некоторые проверкис переменной сеанса или httpcontext.current.user, чтобы определить, какой тип контроллера я должен предоставить конечному пользователю.

Дело в том, что, если я делаю обычный GET (или используя дочерние действия внутри представления), яустановить эти два значения при вызове GetControllerType, но если я выполняю ajax-вызов POST (с помощью contentType: 'application / json; charset = utf-8') через jquery, непосредственно для actionmethod, пользователь и сеанс в моем httpcontext имеют значение nullно они устанавливаются через мгновение, когда я пытаюсь получить к ним доступ в своем действии контроллера (или в actionfilter).

Также AcquireRequestState в этом случае никогда не запускается, и если я перемещаюсь по свойству RequestContext, я вижучто куки для сессии (с session id) действительны.

Есть ли у вас подсказка ??И почему на обычных вызовах GET сеанс и пользователь установлены в это время, и у меня нет этой проблемы?

Код выглядит так:

protected override Type GetControllerType(RequestContext requestContext, string controllerName)
{
    if(plugins.All.Where(w=> w.Name == HttpContext.Current.Session["pluginName"].ToString() && w.User == HttpContext.Current.User.Identity.Name) 
        [do stuff]
}

Я могу избежать сеанса, но не могу избежатьсоответствие для текущего пользователя.

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