Wcf HttpContext.Current在我的web服务中为空

Wcf HttpContext.Current在我的web服务中为空,wcf,web-services,inputstream,httpcontext,Wcf,Web Services,Inputstream,Httpcontext,我有一个web服务(.svc),我正在尝试使用StackOverflow上其他地方的一段代码捕获SOAP请求 问题是HttpContext.Current为空,因此我无法访问Request.InputString 为什么为空,如何解决 XmlDocument xmlSoapRequest = new XmlDocument(); Stream receiveStream = HttpContext.Current.Request.InputStream; receiveStream.Posit

我有一个web服务(.svc),我正在尝试使用StackOverflow上其他地方的一段代码捕获SOAP请求

问题是
HttpContext.Current
为空,因此我无法访问
Request.InputString

为什么为空,如何解决

XmlDocument xmlSoapRequest = new XmlDocument();

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

using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
    xmlSoapRequest.Load(readStream);
}
来自其中一个关于这个问题的人

HttpContext:Current在从WCF中访问时始终为空 服务改用RequestContext


如果您想使用
HttpContext
,因为代码已经这样编写;您需要将其添加到服务所在的web.config中:


请参见
使用
System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath

更正,否则请使用下面的方法读取标题

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

从web服务访问HttpContext.Current时为null。请改用HttpRuntime.Cache。

谢谢。我们已经预构建了类来查找httpcontext。仅供参考,我还必须在我的服务类定义之前添加以下内容-->[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]非常有效!