/ / Prueba de integración: esta operación requiere el modo de canalización integrado de IIS: c #, asp.net, http, iis, integración de pruebas

Prueba de integración: esta operación requiere el modo de canalización integrado de IIS: c #, asp.net, http, iis, integración de pruebas

Estoy usando VS 2015 con .Net 4.6.1. Estoy tratando de escribir una prueba de integración para un código, pero me está dando un error anterior. No puedo entenderlo. Este método está en global.asax

public void Application_EndRequest(object sender, EventArgs e)
{
AddCorsResponseHeadersForUnauthorizedRequests(Response, Request);
}

public static void AddCorsResponseHeadersForUnauthorizedRequests(HttpResponse response, HttpRequest request)
{
var origin = request.Params[AppConstant.RequestHttpOrigin];
if (response.StatusCode == (int) HttpStatusCode.Unauthorized &&
string.IsNullOrEmpty(response.Headers[AppConstant.AccessControlAllowOrigin]) &&
!string.IsNullOrEmpty(origin))
{
response.AddHeader(AppConstant.AccessControlAllowOrigin, WebApiConfig.GetCorsAllowedOrigin());
response.AddHeader(AppConstant.AccessControlAllowCredentials, "true");
}
}

IntegrationTest.cs

[TestFixture]
public class AuthenticationResponseHeadersTests
{
private WebApiApplication systemUnderTest;
private HttpRequest httpRequest;
private HttpResponse httpResponse;

[SetUp]
public void Setup()
{
systemUnderTest = new WebApiApplication();
httpRequest = new HttpRequest(string.Empty, "http://localhost:5001/", string.Empty);
httpResponse = new HttpResponse(TextWriter.Null);
httpResponse.AddHeader("Connection", "keep-alive");
}

[Test]
public void ShouldAddCorsResponseHeaders()
{
httpResponse.StatusCode = (int)HttpStatusCode.Unauthorized;
WebApiApplication.AddCorsResponseHeadersForUnauthorizedRequests(httpResponse, httpRequest);

Assert.AreEqual("http://localhost:5001", httpResponse.Headers[AppConstant.AccessControlAllowOrigin]);
Assert.AreEqual("true", httpResponse.Headers[AppConstant.AccessControlAllowCredentials]);
}
}

El error que recibo está encendido si la condición en la que está tratando de obtener el encabezado específico para los Cabeceros de respuesta y el error son, ¿alguna idea? ¿Por qué necesita IIS para la prueba?

Esta operación requiere el modo de canalización integrada IIS

enter image description here

Respuestas

1 para la respuesta № 1

El modo clásico (el único modo en IIS6 e inferior) es un modo en el que IIS solo funciona con extensiones ISAPI

El modo integrado, por otro lado, es un modo nuevo en IIS7 en el que la interconexión de IIS está estrechamente integrada (es decir, es la misma) que la canalización de solicitudes de ASP.NET

seleccione el nodo del proyecto de aplicación web en el Explorador de soluciones y presione F4 y cambie su canalización enter image description here

Por cierto, debido a que está utilizando la API web, no hay necesidad de preocuparse por HttpModule y HttpHandlers porque su sección se ha cambiado en la configuración web en el modo de canalización integrada.

ACTUALIZAR Voy a sugerir Use IHttpContext y escriba supropio envoltorio con una interfaz para ellos como decir IHttpContext. Entonces solo tienes tu propio HttpContext y delegas todas las llamadas a él. Luego, en tu aplicación, todos usan la interfaz. Esto soluciona su problema al interactuar con las clases selladas de Microsofts porque puede sustituir simulacros o talones o lo que sea.

Compruebe este enlace: http://haacked.com/archive/2007/09/09/ihttpcontext-and-other-interfaces-for-your-duck-typing-benefit.aspx/