से HttpContext.Current तक पहुँच मैंने अभी एएसपी.NET AJAX के साथ डब्ल्यूसीएफ सेवाओं का उपयोग शुरू किया। मैं जावास्क्रिप्ट से अपनी डब्ल्यूसीएफ सेवा को तुरंत चालू करता हूं और फिर स्ट्रिंग वैरिएबल को अपने डब्ल्यूसीएफ सेवा विधि (एक ऑपरेशन कंट्रैक्ट हस्ताक्षर के साथ) के तर्क के रूप में पास करता हूं। मैं फिर एक .NET ऑब्जेक्ट (डेटाकंट्रैक्ट के साथ परिभाषित) लौटाता हूं जो मेरी कस्टम जावास्क्रिप्ट क्लास से जुड़ा हुआ है। मुझे अपने वेब सत्र में लॉग इन किए गए उपयोगकर्ता के आधार पर प्रमाणीकरण में समस्या आ रही है। हालांकि, डब्लूसीएफ वेब सेवा एक पूरी तरह से अलग सेवा है जिसमें HttpContext.Current ऑब्जेक्ट का कोई संदर्भ नहीं है। उस ऑब्जेक्ट तक पहुंचने का सबसे सुरक्षित तरीका क्या है?WCF वेब सेवा
उत्तर
आप बेहतर विन्यास के माध्यम से, AspNetCompatibility को सक्षम करने से HttpContext.Current
तक पहुँच प्राप्त कर सकते हैं:
<configuration>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
</configuration>
बदले में आपको वर्तमान उपयोगकर्ता तक पहुंच प्राप्त करने की अनुमति मिलती है: HttpContext.Current.User
- जो आप के बाद हैं, है ना?
तुम भी एक अतिरिक्त विशेषता के साथ अपनी सेवा वर्ग सजाने द्वारा AspNetCompatibility लागू कर सकते हैं: (। System.ServiceModel.Activation
नाम स्थान में)
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
उस विशेषता जगह में है, तो आपकी सेवा शुरू करने के लिए जब तक AspNetCompatibility है असफल हो जायेगी सक्षम!
आप एक HttpContext डिफ़ॉल्ट रूप से नहीं है, लेकिन आप OperationContext में मौजूद ही वस्तुओं (जो हमेशा मौजूद है) या WebOperationContext (जो कुछ बाइंडिंग के लिए उपलब्ध है के कई की है।
आप उपयोग कर सकते हैं OperationContext या WebOperationContext स्थिर .Current
संपत्ति इतनी तरह का उपयोग करके: WebOperationContext.Current
+1 इस स्वीकार किए जाते हैं जवाब होना चाहिए। हम डब्ल्यूसीएफ से निपट रहे हैं जिसे विंडोज सेवा या स्वयं-होस्ट में होस्ट किया जा सकता है। AspNetCompatilibity बस एक पुरानी आदत है। – Askolein
मामले में आप Web.config बदलना नहीं चाहते हैं या आप इसे बदल नहीं सकते हैं:
private string GetClientIPAddress()
{
var props = OperationContext.Current.IncomingMessageProperties;
var endpointProperty = props[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
if (endpointProperty != null)
{
if (endpointProperty.Address == "::1" || String.IsNullOrEmpty(endpointProperty.Address))
return "127.0.0.1";
return endpointProperty.Address;
}
return String.Empty;
}
- 1. WCF वेब सेवा
- 2. WCF वेब सेवा AppFabric
- 3. WCF सेवा या वेब एपीआई
- 4. WCF सेवा
- 5. WCF सेवा
- 6. WCF वेब सेवा विफल पर बड़ा डेटा
- 7. सरल WCF सेवा, सेवा
- 8. WCF सेवा
- 9. WCF सेवा
- 10. WCF सेवा
- 11. WCF सेवा
- 12. रनिंग WCF सेवा निर्देशिका सेवा
- 13. wcf सेवा से वापसी एचटीएमएल
- 14. WCF सेवा आईआईएस लॉग
- 15. एक WCF सेवा कार्यान्वयन
- 16. एक async WCF सेवा
- 17. एक RESTful WCF सेवा
- 18. WCF बाकी सेवा प्रतिक्रियाओं
- 19. WCF सेवा कनेक्शन आईआईएस
- 20. एक WCF सेवा
- 21. WCF सेवा मूलभूत मूल्यों
- 22. मैं एक wcf सेवा
- 23. एक वेब सेवा को कॉल करना जिसके लिए wcf क्लाइंट
- 24. WCF वेब सेवा परिवर्तन wsdl नाम और targetNamespace
- 25. WCF
- 26. WCF सेवा में शब्दकोश गुजर
- 27. कॉलिंग WCF सेवा POST पद्धति
- 28. WCF सेवा में HttpContext शून्य?
- 29. स्टेटिक निर्माता PerSession WCF सेवा
- 30. SharePoint 2010 कस्टम WCF सेवा
इनपुट के लिए धन्यवाद। मैंने आपको एक बिंदु दिया। एक बार जब मैंने इसका परीक्षण किया है तो मैं अपना जवाब चिह्नित करूंगा। हम उपयोगकर्ता को हमारे आवेदन में थोड़ा अलग तरीके से संग्रहीत कर रहे हैं, इसलिए हमें फॉर्म प्रमाणीकरण के लिए अनुशंसा करते समय चीजों को फिर से डिजाइन करना होगा। तब मैं इस दृष्टिकोण का उपयोग कर सकता हूं। – MacGyver
यह ध्यान देने योग्य है कि यह केवल तभी काम करता है जब आपकी सेवा आईआईएस में होस्ट की जाती है। –