web-dev-qa-db-fra.com

HttpContext.Current est null dans mon service Web

J'ai un service Web (.svc) et j'essaie de capturer la demande SOAP à l'aide d'un morceau de code trouvé ailleurs sur StackOverflow. 

Le problème est que HttpContext.Current est null, je ne peux donc pas accéder à Request.InputString

Pourquoi est-ce nul et comment peut-on le résoudre?

XmlDocument xmlSoapRequest = new XmlDocument();

Stream receiveStream = HttpContext.Current.Request.InputStream;
receiveStream.Position = 0;

using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
    xmlSoapRequest.Load(readStream);
}
17
Pepito Fernandez

Si vous voulez utiliser HttpContext parce que le code a déjà été écrit ainsi; vous devez ajouter ceci à votre web.config où réside votre service:

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

À partir de l'une des pages de Microsoft sur le sujet.

HttpContext: Current est toujours nul lorsqu'il est accédé depuis un service WCF . Utilisez RequestContext à la place.

15
Joachim Isaksson

Correct sinon utiliser ci-dessous pour lire en-tête

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