Ссылка на this question и, в частности, this answer, проголосовавших, но не отмеченных. Мне не нравится отмеченный ответ, потому что мне нужно провести тестирование контроллера.Является ли это по-прежнему рекомендуемым способом модульного тестирования с API, для которого требуются HttpRequest и HttpResponse?
Внесение этих данных в HttpRequest и HttpResponse во время Application_BeginRequest немного пахнет, но я имею дело с ComponentSpace SAML 2 library, который принимает эти типы в качестве аргументов метода. Нет ли лучшего способа получить доступ к ним в MVC с возможностью тестирования?
Вот что я сейчас работаю. Может рефакторить .items из в метод расширения для инкапсуляции бросание и волшебную строку, но это основная идея:
Global.asax:
protected void Application_BeginRequest()
{
// put the raw request in context items for use by ComponentSpace SAML lib
Context.Items["HttpRequest"] = Context.Request;
Context.Items["HttpResponse"] = Context.Response;
}
методов обслуживания:
// HttpContext is an instance of HttpContextBase
ServiceProvider.SendAuthnRequestByHTTPPost(
HttpContext.Items["HttpResponse"] as HttpResponse,
authnRequest.Destination, authnRequestXml, relayState);
ServiceProvider.ReceiveSAMLResponseByHTTPPost(
HttpContext.Items["HttpRequest"] as HttpRequest,
out samlResponseXml, out relayState);
_I не нравится отмеченная answer_ почему вы не начать щедрость в этой теме? –
@ sh4nx0r, таким образом было дешевле. – danludwig