2013-06-21 10 views
5

के साथ कस्टम प्रोटोकॉल पंजीकृत करें मैं एक ऐसे वेब सर्वर तक पहुंच रहा हूं जिसके लिए यूआरएल में http के बजाय कस्टम प्रोटोकॉल की आवश्यकता है। मैंने अपना प्रोटोकॉल पंजीकृत करने का प्रयास किया है, लेकिन इस काम को कैसे प्राप्त किया जाए, इस पर बहुत अधिक दस्तावेज़ीकरण नहीं है। वेब सर्वर मानक HTTP प्रतिक्रियाओं को पूरा करता है, लेकिन यदि अनुरोध http: // के बजाय कस्टम: // के साथ पूर्ववत नहीं किया गया है, तो यह काम नहीं करेगा। मैं केवल WebRequest अंतर्निहित कार्यक्षमता का उपयोग करना चाहता हूं क्योंकि यह अंततः HTTP है, हालांकि, मुझे अपने कस्टम प्रोटोकॉल यूआरएल के साथ अनुरोध जमा करने का एक तरीका चाहिए। मैं इसे इस तरह रजिस्टर:WebRequest

WebRequest.RegisterPrefix("custom", new CustomWebRequestCreator()); 

लेकिन फिर भी, जब मैं एक WebRequest बनाने के लिए जाना है, जबकि यह इस कोड के बाद अपने कस्टम वर्ग रिटर्न:

Uri uri = new Uri("custom://192.168.0.122:94934/resource"); 
System.Net.WebRequest request = WebRequest.Create(uri); 

डिबगर का कहना है कि वास्तव में मेरे अनुरोध है कस्टम वर्ग है, लेकिन फिर मैं इस अपवाद:

System.NotImplementedException was unhandled 
    HResult=-2147467263 
    Message=This method is not implemented by this class. 
    Source=System 
    StackTrace: 
     at System.Net.WebRequest.GetResponse() 
... 

जब मैं सिर्फ उपसर्ग पंजीकरण किए बिना WebRequest.Create() के लिए मेरे यूआरएल पारित करने के लिए प्रयास करते हैं, मैं इस अपवाद:

System.NotSupportedException was unhandled 
    HResult=-2146233067 
    Message=The URI prefix is not recognized. 
    Source=System 
    StackTrace: 
     at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) 
     at System.Net.WebRequest.Create(Uri requestUri) 
    ... 

कोई विचार यह है कि मैं इसे कैसे काम कर सकता हूं?

उत्तर

0

ऐसा प्रतीत नहीं होता है, या स्क्रैच से WebRequest के लिए HTTP को पुनः कार्यान्वित करने की जटिलता के स्तर तक पहुंच जाएगा।

मेरा सुझाव है कि आप एक टीसीपी रिले बनाएं, जिसे आप WebRequest [http://localhost/resource] का उपयोग करने के लिए कनेक्ट करते हैं, ताकि इसे WebRequest का विरोध किए बिना काम करने के लिए कनेक्ट किया जा सके। रिले बदले में टीसीपी सॉकेट 192.168.0.122:94934 पर जाएगा।

रिले के साथ, आप सामान्य और सरलीकृत WebRequest ऑब्जेक्ट का उपयोग करते हैं। यदि यह कंसोल/वेबफॉर्म आवेदकॉन के लिए है, तो आवेदन शुरू होने पर रिले को किसी अन्य धागे पर शुरू किया जा सकता है (या अतुल्यकालिक रूप से शुरू किया जा सकता है)।

संबंधित मुद्दे