2012-01-23 12 views
17

मेरे पास एक वेब सेवा (.svc) है, और मैं StackOverflow पर कहीं और पाए गए कोड के टुकड़े का उपयोग करके SOAP अनुरोध को कैप्चर करने का प्रयास कर रहा हूं।HttpContext.Current मेरी वेब सेवा में शून्य है

समस्या यह है कि 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); 
} 

उत्तर

41

यदि आप HttpContext का उपयोग करना चाहते हैं क्योंकि कोड पहले से ही लिखा गया है; आप जहां आपकी सेवा रहता है अपने web.config को यह जोड़ने की जरूरत:

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

धन्यवाद नीचे का उपयोग करें। हमारे पास httpcontext की तलाश में प्रीबिल्ट कक्षाएं हैं। एफवाईआई मुझे भी अपनी सेवा श्रेणी परिभाषा से पहले निम्नलिखित जोड़ना पड़ा -> [AspNetCompatibilityRequirements (आवश्यकताएँ मोड = AspNetCompatibilityRequirementsMode.Allowed)] – ejhost

14
Microsoft's pages विषय पर में से एक से

एचटीपी कॉन्टेक्स्ट: डब्लूसीएफ सेवा के भीतर से उपयोग किए जाने पर वर्तमान हमेशा शून्य होता है। इसके बजाय RequestContext का उपयोग करें।

1

सही किसी और शीर्ष लेख को पढ़ने के लिए

var headers = OperationContext.Current.IncomingMessageProperties["httpRequest"]; 
       var apiToken = ((HttpRequestMessageProperty)headers).Headers["apiKey"]; 
संबंधित मुद्दे