मेरे पास आईआईएस में चल रही डब्ल्यूसीएफ सेवा है जो क्लास लाइब्रेरी में एक फ़ंक्शन कॉल करती है जहां httpContext उपलब्ध है। मैं गतिशील रूप से वेब साइट यूआरएल कैसे प्राप्त कर सकता हूं, यह एक वर्चुअल निर्देशिका भी हो सकता है?डब्ल्यूसीएफ सेवा, कक्षा पुस्तकालय के भीतर से वेब साइट यूआरएल कैसे प्राप्त करें?
उत्तर
आप एक सेवाहोस्ट फैक्टरी बना सकते हैं जो आपके सेवा होस्ट को मैन्युअल रूप से लॉन्च करता है, फिर अपने एप्लिकेशन द्वारा उपयोग किए जाने वाले स्थिर वर्ग में एंडपॉइंट पता संग्रहीत करें।
/// <summary>
/// Extends ServiceHostFactory to allow ServiceHostFactory to be used.
/// </summary>
public class MyServiceHostFactory : ServiceHostFactory
{
/// <summary>
/// Creates a new ServiceHost using the specified service and base addresses.
/// </summary>
/// <param name="serviceType"></param>
/// <param name="baseAddresses"></param>
/// <returns></returns>
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
ServiceHost host;
host = new ServiceHost(serviceType, baseAddresses);
MyGlobalStaticClass.Address = baseAddresses[0]; // assuming you want the first endpoint address.
return host;
}
(अपने MyGlobalStaticClass.cs में):
(अपने myService.svc में):
<%
@ServiceHost
Service="MyNamespace.MyService"
Factory="MyNamespace.MyServiceHostFactory"
%>
(अपने MyServiceHostFactory.cs में) यहाँ एक सरल उदाहरण है
public static string Address = "";
मैं डब्ल्यूसीएफ पर बहुत गर्म नहीं हूं क्योंकि मैं .NET 2.0 के लिए अधिक उपयोग करता हूं, लेकिन क्या ऐसा होगा?
HttpContext.Current.Request.Url.ToString()
आपको कॉलिंग अनुरोध का यूआरएल देना चाहिए। यहां पकड़ यह है कि आप संभवतः एक ही सेवा पर इंगित एकाधिक डोमेन या आभासी निर्देशिकाएं प्राप्त कर सकते हैं और यह आपको केवल क्लाइंट निर्दिष्ट यूआरएल देगा। हालांकि यदि आपके पास एकाधिक प्रविष्टि बिंदु हैं, तो वैसे भी कोई "एक" यूआरएल नहीं है।
यह भी मानता है कि डब्ल्यूसीएफ बाइंडिंग मूल है एचटीपी बाइंडिंग या प्रकार के HTTP बाध्यकारी (उदाहरण के लिए netTcp बाइंडिंग में एचटीपी कॉन्टैक्ट नहीं है)। – Russell
मैं यह मानकर शुरू करने जा रहा हूं कि आप HTTP का उपयोग कर रहे हैं - मुझे यकीन है कि आप दृष्टिकोण के आधार पर समायोजित कर सकते हैं आपकी विशिष्ट स्थितियों के बारे में क्या निर्देश है। मैंने HttpContext का उपयोग करके एक उत्तर प्राप्त करने का प्रयास किया और पाया कि कैसिनी के नीचे चलते समय मूल्य शून्य था इसलिए मैंने वैकल्पिक दृष्टिकोण की कोशिश की।
सिस्टम.ServiceModel.OperationContext में उचित अनुरोध संदर्भ शामिल है। आप वास्तविक अनुरोध संदेश पर अनुरोध का पालन कर सकते हैं और शीर्षलेख को साफ़ कर सकते हैं।
Uri requestUri = System.ServiceModel.OperationContext.Current.RequestContext.RequestMessage.Headers.To;
वर्तमान में मैं WCF बाकी सेवा पर काम कर रहा हूँ और मैं आवश्यकता का एक ही तरह की है। मुझे अपनी विधि में सेवा होस्ट यूआरएल की ज़रूरत है। कक्षा पुस्तकालय में डब्ल्यूसीएफ आरईएसटी सेवा होस्ट/यूआरएल प्राप्त करने के विभिन्न तरीके नीचे दिए गए हैं।
आप WebOperationContext
कक्षा का उपयोग कर सकते हैं जो सेवा यूआरएल प्राप्त करने के लिए System.ServiceModel.Web
नामस्थान में उपलब्ध है। कृपया ध्यान दें कि यह कक्षा केवल डब्ल्यूसीएफ आरईएसटी सेवा के लिए है।
WebOperationContext.Current.IncomingRequest.Headers["host"]
- देता है सेवा होस्ट नामWebOperationContext.Current.IncomingRequest.UriTemplateMatch.BaseUri.Host
- देता है सेवा होस्ट नामWebOperationContext.Current.IncomingRequest.UriTemplateMatch.BaseUri.AbsoluteUri
- सेवा पूर्ण यूआरएलWebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri.AbsoluteUri
देता है - देता है सेवा पूर्ण यूआरएल
आप अधिक जानकारी के MSDN
मेरे लिए, UriTemplateMatch हमेशा शून्य है, इसलिए मैं इन सुझावों में से 3/4 का उपयोग नहीं कर सकता। –
- 1. डब्ल्यूसीएफ सेवा पुस्तकालय बनाम कक्षा पुस्तकालय परियोजना प्रकार
- 2. डब्ल्यूसीएफ वेब सेवा
- 3. सेवा के भीतर से संपत्ति यूआरएल कैसे उत्पन्न करें?
- 4. डब्ल्यूसीएफ सेवा पुस्तकालय और डब्ल्यूसीएफ सेवा आवेदन के बीच अंतर
- 5. अपाचे सर्वर के भीतर से एक डब्ल्यूसीएफ सेवा होस्ट करें?
- 6. वेब सेवा (डब्ल्यूसीएफ)
- 7. एएसएमएक्स वेब सेवा के बजाय डब्ल्यूसीएफ सेवा?
- 8. रन समय पर यूआरएल के माध्यम से डब्ल्यूसीएफ वेब सेवा का उपभोग कैसे करें?
- 9. वेब सेवा संस्करण - डब्ल्यूसीएफ
- 10. कक्षा पुस्तकालय से सेवा संदर्भ सहित
- 11. डब्ल्यूसीएफ आरईएसटी वेब सेवा
- 12. एंड्रॉइड एप्लिकेशन से डब्ल्यूसीएफ वेब सेवा उपभोग?
- 13. सी # डब्ल्यूसीएफ वेब सेवा
- 14. मौजूदा एएसपीनेट वेब साइट
- 15. सेवा संदर्भों के साथ कक्षा पुस्तकालय
- 16. डब्ल्यूसीएफ जेसन वेब सेवा
- 17. डब्ल्यूसीएफ वेब सेवा
- 18. डब्ल्यूसीएफ सेवा पुस्तकालय का उद्देश्य क्या है?
- 19. एकता - डब्ल्यूसीएफ सेवा कक्षा के लिए इंटरसेप्शन?
- 20. एप्लिकेशन_स्टार्ट के भीतर से वेबसाइट पर यूआरएल प्राप्त करें?
- 21. एएसपी - रेफरिंग साइट के यूआरएल कैसे प्राप्त करें
- 22. एक डब्ल्यूसीएफ सेवा से दूसरे डब्ल्यूसीएफ सेवा
- 23. डब्ल्यूसीएफ सेवा डीबग कैसे करें?
- 24. डब्ल्यूसीएफ सेवा आवेदन और डब्ल्यूसीएफ सेवा पुस्तकालय के बीच क्या अंतर है?
- 25. Django टेम्पलेट के भीतर वर्तमान यूआरएल कैसे प्राप्त करें?
- 26. एएसएमएक्स को डब्ल्यूसीएफ वेब सेवा
- 27. विंडोज सेवा से डब्ल्यूसीएफ आरआईए सेवा का उपयोग कैसे करें?
- 28. डब्ल्यूसीएफ सेवा
- 29. वेब सेवा के बिना डब्ल्यूसीएफ आरईएसटी और एसओएपी सेवा
- 30. वेब सेवा से एंड्रॉइड एप्लिकेशन पर छवि कैसे प्राप्त करें
WCF सेवा या साइट HttpContext का स्रोत है कि के लिए यूआरएल के लिए यूआरएल पर के बारे में
WebOperationContext
वर्ग मिल सकता है? डब्ल्यूसीएफ सेवा की मेजबानी करने वाली साइट के लिए – Russellयूआरएल ...उदाहरण के लिए: http: // localhost/वर्चुअल डायरेक्टरी http: //localhost/virtualDirectory/myService.svc –
आईआईएस का कौन सा संस्करण? आईआईएस 6 या 7 या 7.5? क्या डब्ल्यूएएस लागू किया गया है? –