2012-01-23 29 views
17

Tôi có dịch vụ web (.svc) và tôi đang cố gắng nắm bắt yêu cầu SOAP bằng cách sử dụng một đoạn mã được tìm thấy ở nơi khác trên StackOverflow.HttpContext.Current is null trong dịch vụ web của tôi

Vấn đề là HttpContext.Current là không có, vì vậy tôi không thể truy cập Request.InputString.

Tại sao giá trị này là rỗng và cách giải mã có thể được giải quyết?

XmlDocument xmlSoapRequest = new XmlDocument(); 

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

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

Trả lời

41

Nếu bạn muốn sử dụng HttpContext vì mã đã được viết như vậy; bạn cần phải thêm video này vào web.config của bạn, nơi cư trú dịch vụ của bạn:

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

Cảm ơn bạn. Chúng tôi có các lớp dựng sẵn tìm kiếm httpcontext. FYI Tôi cũng đã phải thêm sau đây trước định nghĩa lớp dịch vụ của tôi -> [AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] – ejhost

14

Từ một trong số Microsoft's pages về chủ đề.

HttpContext: Hiện tại luôn rỗng khi được truy cập từ bên trong dịch vụ WCF . Sử dụng RequestContext thay thế.

1

Đúng khác sử dụng bên dưới để đọc tiêu đề

var headers = OperationContext.Current.IncomingMessageProperties["httpRequest"]; 
       var apiToken = ((HttpRequestMessageProperty)headers).Headers["apiKey"]; 
Các vấn đề liên quan