2010-05-27 6 views
18

हम वीएस2005 के साथ बनाए गए पुराने (5+ वर्ष) विंडोज सेवा एप्लिकेशन को बदलने की प्रक्रिया में हैं जो HTTP GET कॉल करता है। ऐसी कई चीजें हैं जो इसे कठिन बनाती हैं (जैसे वेब सर्वर ग्राहक के नेटवर्क पर है और हम सीधे उससे कनेक्ट नहीं हो सकते हैं) और, दुर्भाग्यवश, हम WinForm के साथ इसे बदलने के लिए चल रहे सिस्टम को नहीं लेना चाहते हैं संस्करण जिसे फिडलर द्वारा निगरानी की जा सकती है। नया कोड सब कुछ ठीक से कर रहा प्रतीत होता है, लेकिन, हां, यह प्रमाणित करने में विफल रहा है।क्या विंडोज सेवा से HTTP कॉल को रोकने के लिए फिडलर को कॉन्फ़िगर करने का कोई तरीका है?

क्या विंडोज सेवा से HTTP कॉल को रोकने के लिए फिडलर (2.2.9.1) को कॉन्फ़िगर करने का कोई तरीका है?

उत्तर

34

कोडेका ने मुझे सही दिशा में जाने के लिए एक सुराग प्रदान किया। वह टुकड़ा जो अभी भी गायब था, प्रॉक्सी कॉन्फ़िगर कैसे प्राप्त किया गया था।

<system.net> 
     <defaultProxy enabled="true"> 
       <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/> 
     </defaultProxy> 
</system.net> 

एक बार ऐसा हो रहा था Windows सेवा के http ट्रैफ़िक फ़िडलर के माध्यम से बह शुरू कर दिया: <appname>.exe.config की जरूरत की तरह निम्नलिखित जोड़ा एक वर्ग है।

+1

http://www.fiddler2.com/fiddler/help/hookup.asp#Q -DOTNET – EricLaw

+0

@Eric - लिंक पोस्ट करने के लिए धन्यवाद। कोडेका के सुराग के बाद मैं वास्तव में एफएक्यू आइटम देखता था। यह तुरंत स्पष्ट नहीं था कि यह विंडोज सेवाओं पर लागू होता है। –

+0

एफडब्ल्यूआईडब्लू, इसका "विंडोज सर्विसेज" से कोई लेना-देना नहीं है और इस तथ्य के साथ सबकुछ करना है कि आपकी सेवा .NET में लिखी गई है। :-) – EricLaw

5

फिडलर सिर्फ HTTP प्रॉक्सी के रूप में कार्य करता है, इसलिए यदि आप अपनी सेवा में प्रॉक्सी कॉन्फ़िगर कर सकते हैं तो आप इसे फिडलर के माध्यम से जाने के लिए कॉन्फ़िगर कर सकते हैं। चाहे यह संभव है ...

यदि यह काम नहीं करता है, तो आप इसे दूसरे कंप्यूटर पर फिडलर चलाकर और पोर्ट 80 पर सुनने के लिए कॉन्फ़िगर कर सकते हैं। फिर अपने "परीक्षण" कंप्यूटर पर संपादित करें आपके मेजबान फ़ाइल ताकि यह इसके बजाय दूसरे कंप्यूटर को इंगित करे। तो कहें कि वेब सेवा www.example.com पर है, आपने अपना टेस्ट सर्वर सेट अप किया है ताकि "www.example.com" आपके दूसरे कंप्यूटर (फिडलर चल रहा हो) को इंगित करे। फिर, जब सेवा "www.example.com" से कनेक्ट हो जाती है तो यह वास्तव में फिडलर से कनेक्ट होगा। फ़िडलर अनुरोध/प्रतिक्रिया रिकॉर्ड करने के बाद वास्तविक www.example.com से कनेक्शन आगे बढ़ाएगा।

मैंने उपर्युक्त परीक्षण नहीं किया है, लेकिन मुझे लगता है कि यह काम करेगा। जाहिर है, अगर आप अपनी सेवा में प्रॉक्सी सेटिंग्स को कॉन्फ़िगर कर सकते हैं जो आसान होगा!

3

और, निश्चित रूप से, यदि फिडलर काम नहीं करता है तो हमेशा Wireshark होता है। एक संकेत के रूप में, Wireshark में कुछ फ़िल्टर का उपयोग करें (उदाहरण के लिए गंतव्य आईपी से आने वाले या आने वाले पैकेट दिखाएं) ताकि आप डेटा से अधिक हो रहे महसूस कर सकें।

2

जैसा कि .NET स्थानीयहोस्ट और 127.0.0.1 के लिए प्रॉक्सी को बायपास करता है, बस यूआरएल के लिए परीक्षण कर रहे हैं, जिसके लिए आप परीक्षण कर रहे हैं।

//myUrl = "http://127.0.0.1/myservice"; 
myUrl = "http://mymachine/myservice"; 
-1

नोट: महत्वपूर्ण: अन्य सेटिंग्स के बावजूद, नेट हमेशा स्थानीय होस्ट वाले URL के लिए फ़िडलर प्रॉक्सी का उपयोग नहीं होगा। तो, स्थानीयहोस्ट का उपयोग करने के बजाय, मशीन नाम के संदर्भ में अपना कोड बदलें। उदाहरण के लिए:

यह URL फ़िडलर में दिखाई नहीं देंगे:

http://localhost/X509SignCodeService/X509SigningService.asmx यह URL फ़िडलर में दिखाई देगा: