Если бы необходимо сделать это правильно, я предложил бы смотреть на реализации микшера программного обеспечения с открытым исходным кодом, по крайней мере, для теории.
Некоторые ссылки:
На самом деле необходимо, вероятно, пользоваться библиотекой.
Это ваш метод, поэтому вы можете переписать его, чтобы он принимал HttpRequestBase
? Если нет, вы всегда можете передать текущий HttpRequest
из HttpContext.Current.HttpRequest
. Однако я часто оборачиваю доступ к HttpContext внутри класса, как указано в ASP.NET: Удаление зависимостей System.Web для лучшей поддержки модульного тестирования.
Обычно, когда вам нужно получить доступ к свойству HttpContext
в действии контроллера, есть кое-что, что вы можете сделать лучше с точки зрения дизайна.
Например, если вам нужно получите доступ к текущему пользователю, дайте своему методу действия параметр типа IPrincipal
, который вы заполняете с помощью атрибута
и высмеиваете по своему усмотрению при тестировании. Небольшой пример того, как это сделать, можно найти в этом сообщении в блоге и, в частности, в пункте 7.
Попробуйте использовать / создать HttpRequestWrapper, используя HttpRequestBase.
Это сработало, как сказал Кевин.
Я использую статический метод для получения HttpContext.Current.Request
, поэтому всегда имею объект HttpRequest
для использования при необходимости.
public static HttpRequest GetRequest()
{
return HttpContext.Current.Request;
}
if (AcessoModel.UsuarioLogado(Helper.GetRequest()))
bool bUserLogado = ProjectNamespace.Models.AcessoModel.UsuarioLogado(
ProjectNamespace.Models.Helper.GetRequest()
);
if (bUserLogado == false) { Response.Redirect("/"); }
public static bool UsuarioLogado(HttpRequest Request)