HttpContext на экземплярах Контроллеров являются пустыми в ASP.net MVC

28
задан tereško 15 March 2013 в 05:10
поделиться

5 ответов

Контроллеры не разработаны, чтобы быть созданными вручную как, Вы делаете. Это походит на то, что действительно необходимо делать, помещает любую допускающую повторное использование логику, которую Вы имеете в класс помощника вместо этого.

24
ответ дан Brad Wilson 28 November 2019 в 02:24
поделиться

На данный момент я собираюсь сделать следующее. Это, кажется, приемлемая фиксация...

public new HttpContextBase HttpContext {
    get {
        HttpContextWrapper context = 
            new HttpContextWrapper(System.Web.HttpContext.Current);
        return (HttpContextBase)context;                
    }
}

, Где это добавляется к Классу контроллера, эти Контроллеры наследовались.

я не уверен, является ли HttpContext, являющийся пустым, желаемым поведением, но это зафиксирует его тем временем для меня.

62
ответ дан Hugoware 28 November 2019 в 02:24
поделиться

HttpContext, в ControllerContext является пустым, потому что это не установлено, когда контроллер создается. Конструктор контроллера не присваивает это свойство, таким образом, это будет пустым. Обычно, HttpContext установлен на HttpContext класса ControllerBuilder. Контроллеры создаются классом ControllerBuilder, сопровождаемым DefaultControllerFactory. Когда Вы хотите создать свой собственный экземпляр контроллера, можно использовать ExecuteMethod контроллера с собственным ControllerContext. Вы не хотите делать, который является реальным приложением. Когда Вы получите еще некоторый опыт с платформой, Вы найдете, что соответствующий метод, чтобы сделать хочет Вас, хотят. При необходимости в ControllerContext в Модульном тесте можно использовать платформу насмешки для насмешки ControllerContext, или можно классифицировать фальсифицирование его.

можно найти модель потока запроса в asp.net mvc на этот блог .

, Когда новое для Asp.net mvc, это стоит усилия загрузить исходный код и считать трассировку маршрут, как обрабатывается запрос.

5
ответ дан Paco 28 November 2019 в 02:24
поделиться

Случается так, что Вы хотите использовать некоторую функциональность от контроллера? Или имеет контроллер, выполняют действие?

, Если это - первый, возможно, это - некоторый код, который должен быть разделен в другой класс. Если это - последний, можно сделать, это для простого имения того контроллера делает определенное действие:


return RedirectToAction("SomeAction", "SomeOtherController", new {param1 = "Something" });

0
ответ дан mmacaulay 28 November 2019 в 02:24
поделиться

Вы используете фабрику контроллера? Если так, как Вы регистрируете компоненты?

я столкнулся с этой проблемой, где я непреднамеренно добавил находящуюся в HttpContext зависимость как Singleton, а не Переходный процесс в Виндзоре.

HttpContext был пустым для всех кроме первого запроса. Это взяло меня некоторое время для разыскивания того.

0
ответ дан Ben Scheirman 28 November 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: