wcf web-services inputstream httpcontext

wcf - HttpContext.Current es nulo en mi servicio web



web-services inputstream (4)

Tengo un servicio web (.svc) y estoy tratando de capturar la solicitud SOAP utilizando un fragmento de código que se encuentra en otro lugar en StackOverflow.

El problema es que HttpContext.Current es nulo, por lo que no puedo acceder a Request.InputString .

¿Por qué es nulo y cómo puede resolverse?

XmlDocument xmlSoapRequest = new XmlDocument(); Stream receiveStream = HttpContext.Current.Request.InputStream; receiveStream.Position = 0; using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8)) { xmlSoapRequest.Load(readStream); }


Corregir de lo contrario usar a continuación para leer el encabezado

var headers = OperationContext.Current.IncomingMessageProperties["httpRequest"]; var apiToken = ((HttpRequestMessageProperty)headers).Headers["apiKey"];


De una de las páginas de Microsoft sobre el tema.

HttpContext: la corriente siempre es nula cuando se accede desde un servicio WCF. Utilice RequestContext en su lugar.



Si desea utilizar HttpContext porque el código ya se ha escrito como tal; necesita agregar esto a su web.config donde reside su servicio:

<configuration> <system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel> </configuration>