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.
Por favor, consulte ¿Cómo obtener la ruta de trabajo de una aplicación wcf? Use System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath
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>