我有一个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);
}
答案 0 :(得分:45)
如果你想使用HttpContext
,因为代码已经被写成了;您需要将此添加到您的服务所在的web.config中:
<configuration>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
</configuration>
答案 1 :(得分:15)
关于这个主题的Microsoft's pages之一。
HttpContext:当从WCF中访问时,Current始终为null 服务。请改用RequestContext。
答案 2 :(得分:1)
正确使用以下用于读取标题
var headers = OperationContext.Current.IncomingMessageProperties["httpRequest"];
var apiToken = ((HttpRequestMessageProperty)headers).Headers["apiKey"];
答案 3 :(得分:0)
HttpContext.Current为null。改用HttpRuntime.Cache。
答案 4 :(得分:-4)
请参阅How to get working path of a wcf application?
使用System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath