2011-03-04 11 views
14

यहाँ कोड की मेरी लाइन है और यह मेरे HttpConext.CurrentWCF सेवा में HttpContext शून्य?

string postData = "username=" + HttpContext.Current.Server.UrlEncode(USERNAME); 
+0

जहां इस कोड रखा गया है? एक डब्ल्यूसीएफ सेवा डेटा अनुबंध के अंदर? –

+0

wcf service.svc.cs –

उत्तर

21

यह सामान्य है पर त्रुटि फेंकता है। डब्ल्यूसीएफ वेब सेवा में कोई HTTP संदर्भ नहीं है। एक वेब सर्वर के अंदर एक डब्ल्यूसीएफ सेवा भी होस्ट नहीं की जा सकती है। आप कंसोल एप्लिकेशन के अंदर होस्ट कर सकते हैं। वहाँ एक चाल है कि आप ASP.NET Compatibility Mode सेट करने देता है:

<system.serviceModel>   
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel> 

लेकिन यह कुछ है कि मैं तुम क्या कर की सिफारिश करेंगे नहीं है।

मैं इस बजाय करना होगा:

var postData = "username=" + HttpUtility.UrlEncode(USERNAME); 

और क्योंकि मैं जहां इस कोड के साथ जा रहे हैं के बारे में 7 वीं भावना (एक दूरस्थ वेब सर्वर के लिए एक HTTP अनुरोध के रूप में यह भेजने) के लिए सीधे जाओ बिंदु:

using (var client = new WebClient()) 
{ 
    var values = new NameValueCollection 
    { 
     { "username", USERNAME } 
    }; 
    var result = client.UploadValues("http://foo.com", values); 
} 
+0

के अंदर रखा गया कोड मैं अपनी स्थानीय मशीन पर इस सेवा का परीक्षण कर रहा हूं क्या कोई रास्ता नहीं है? –

+1

@ एबू हमज़ा, इससे कोई फर्क नहीं पड़ता, कृपया डब्लूसीएफ सेवा के अंदर कोई एचटीपी कॉन्टेक्स्ट नहीं है। –

+0

+1 याद दिलाने के लिए कि wcf हमेशा वेबसर्वर में नहीं है – Michel

6

आप वेब config में aspNetCompatibilityEnabled ध्वज सेट कर सकते हैं HttpContext सक्षम करना चाहते हैं।

<system.serviceModel>   
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel>