WCF सेवा की निगरानी के लिए फ़िडलर का उपयोग कैसे करें


107

मेरे पास एक WCF सेवा है जो एक जटिल प्रकार को स्वीकार करती है और कुछ डेटा लौटाती है। मैं फ़िडलर का उपयोग यह देखना चाहता हूं कि सेवा में आने वाले अनुरोध क्या दिखते हैं। क्लाइंट .net कंसोल ऐप है जो सेवा संदर्भ प्रॉक्सी का उपयोग करता है। क्या यह फिडलर के साथ संभव है। मैं इस टूल के लिए नया हूं और केवल अनुरोध बिल्डर के साथ डेटा पोस्ट करने के लिए अतीत में इसका उपयोग किया है।


4
WCF अनुरेखण सेवाएं उन्हें देखने के लिए एक अच्छा GUI सहित अपने आप में बहुत अच्छी हैं। msdn.microsoft.com/en-us/library/ms751526.aspx
केनी

जवाबों:


148

आपको इसे अपने web.config में जोड़ना होगा

<system.net>
  <defaultProxy>
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>
  1. उसके बाद WEBSERVER मशीन पर Fiddler शुरू करें।
  2. टूल्स पर क्लिक करें | फ़िडलर विकल्प => कनेक्शन => पोर्ट को 8888 के रूप में समायोजित करें। (रिमोट की आवश्यकता होने पर अनुमति दें)
  3. ठीक है, फिर फ़ाइल मेनू से, ट्रैफ़िक कैप्चर करें।

यह सब है, लेकिन फ़िडलर को बंद करने के बाद web.config लाइनों को हटाने के लिए मत भूलना, क्योंकि यदि आप ऐसा नहीं करते हैं तो एक त्रुटि होगी।

संदर्भ: http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy


1
धन्यवाद, जिसने वास्तव में मेरी भी मदद की। http://प्रॉक्सी पते में मेरी गलती निर्दिष्ट नहीं थी । बाकी सब वही था, जैसा आपने उल्लेख किया है।
जॉनी_डी

1
इसने मेरे लिए काम नहीं किया। मेरी स्थिति यह है: सर्वर IIS7.5 है, क्लाइंट एक कंसोल एप्लिकेशन है। मेरे कंसोल ऐप में, मैंने एक वेबसर्विस विधि कहा है जो मेरे विकसित कंप्यूटर पर IIS7.5 पर तैनात है। "लोकलहोस्ट" के साथ मेरे कंप्यूटर के नाम ने मेरे लिए काम किया।
यार्क

5
धन्यवाद, यह मेरे लिए काम किया। वैसे, मेरे मामले में मैंने लोकलहोस्ट पर WCF क्लाइंट ट्रैफ़िक को कैप्चर करने की कोशिश की , इसलिए अपनी सेटिंग्स को जोड़ने के अलावा, यह URL http://localhost/abc.svcकोhttp://HOSTNAME/abc.svc
cateyes

1
किसी कारण से मेरे लिए काम नहीं किया (मैं .svc वेब सेवा का उपयोग कर रहा हूं)। आखिरकार मेरी तरीके का उपयोग करने के लिए था पकड़ने वाला खिड़कियों के लिए
रेन

2
बहुत बढ़िया! @Cateyes के सुझाव ने मेरे लिए यह किया
अलेक्जेंडर डर्क

9

फ़िडलर इनबाउंड अनुरोधों के बजाय आउटबाउंड अनुरोधों को सुनता है ताकि आप फ़िडलर का उपयोग करके आपकी सेवा में आने वाले सभी अनुरोधों की निगरानी करने में सक्षम न हों।

फ़िडलर के साथ आप जो सबसे अच्छा करने जा रहे हैं वह सभी अनुरोधों को देखने की क्षमता है क्योंकि वे आपके कंसोल ऐप द्वारा उत्पन्न होते हैं (यह मानते हुए कि ऐप कुछ अन्य पाइपलाइन का उपयोग करने के बजाय वेब अनुरोध उत्पन्न करता है)।

यदि आप एक ऐसा उपकरण चाहते हैं जो अधिक शक्तिशाली (लेकिन उपयोग करने के लिए अधिक कठिन) है जो आपको आने वाले सभी अनुरोधों की निगरानी करने की अनुमति देगा, तो आपको वायरहार्क की जांच करनी चाहिए।

संपादित करें

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


जानकारी के लिए धन्यवाद। मुझे asmx सेवाओं के लिए विवरण पृष्ठ के समान अनुरोध संरचना को देखने की आवश्यकता है। WCF के पास यह विकल्प नहीं है।
क्वाडविक्स

9
यह बिल्कुल सटीक नहीं है (और "पावर" व्यक्तिपरक है, क्योंकि वायरशार्क ट्रैफ़िक को बदल नहीं सकता है)। इनबाउंड ट्रैफ़िक कैसे सुनना है, इस बारे में अधिक जानकारी के लिए fiddler2.com/fiddler/help/reverseproxy.asp देखें ।
एरिकलॉव

एरिक - मेरा सुझाव है कि आप एक स्टैंडअलोन जवाब में बताएं।
चीजो

9

बस यह समस्या थी, मेरे लिए जो काम किया वह था लोकलहोस्ट का उपयोग करना।

 <endpoint address="http://localhost.fiddler/test/test.svc"
            binding="basicHttpBinding" 
            bindingConfiguration="customBinding" 
            contract="test" 
            name="customBinding"/>

6

कई उपयोग मामलों के लिए टिप्पणियों / उत्तरों में उल्लिखित केवतों को समेकित करना।

अधिकतर, http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp देखें

  • अपने ऐप से पहले फ़िडलर शुरू करें
  • कंसोल ऐप में, आपको यह निर्दिष्ट करने की आवश्यकता नहीं होगी proxyaddress:

    <proxy bypassonlocal="False" usesystemdefault="True" />
  • IIS में होस्ट किए गए वेब एप्लिकेशन / किसी चीज़ में, आपको जोड़ने की आवश्यकता है proxyaddress:

    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  • जब .NET एक अनुरोध करता है (एक सेवा क्लाइंट या HttpWebRequest, आदि के माध्यम से ) यह हमेशा URL वाले फ़िडलर प्रॉक्सी को बायपास करेगा localhost, इसलिए आपको मशीन के नाम की तरह एक अन्य नाम का उपयोग करना होगा या अपनी 'होस्ट' फ़ाइल में कुछ बनाना होगा (इसीलिए कुछ ऐसा है localhost.fiddlerया http://HOSTNAMEकाम करता है)
  • यदि आप निर्दिष्ट करते हैं proxyaddress, तो आपको इसे अपने कॉन्फ़िगरेशन से निकालना होगा यदि फ़िडलर चालू नहीं है, या आपका एप्लिकेशन जो भी अनुरोध करता है वह अपवाद को फेंक देगा:

    कोई संबंध नहीं बनाया जा सका क्योंकि लक्ष्य मशीन ने इसे सक्रिय रूप से मना कर दिया 127.0.0.1:8888

  • उत्पादन में प्रॉक्सी अनुभाग को हटाने के लिए कॉन्फ़िगरेशन परिवर्तनों का उपयोग करना न भूलें

4

इतना सरल, आपको केवल क्लाइंट में पता बदलने की जरूरत है: मशीन के नाम या आईपी में 'लोकलहोस्ट' परिवर्तन के बजाय


1

यह सीधा है यदि आपके पास संचार भेजने वाले ग्राहक पर नियंत्रण है। आपको केवल क्लाइंट-साइड सर्विस क्लास पर HttpProxy सेट करने की आवश्यकता है।

मैंने ऐसा किया, उदाहरण के लिए, स्मार्टफोन पर चलने वाले वेब सेवा क्लाइंट का पता लगाने के लिए। मैंने उस क्लाइंट-साइड कनेक्शन पर आईपी / पोर्ट ऑफ फिडलर के लिए प्रॉक्सी सेट किया, जो नेटवर्क पर एक पीसी पर चल रहा था। तब स्मार्टफोन ऐप ने अपने सभी निवर्तमान संचार को वेब सेवा, फ़िडलर के माध्यम से भेजा।

यह पूरी तरह से काम किया।

यदि आपका क्लाइंट WCF क्लाइंट है, तो प्रॉक्सी सेट करने के तरीके के लिए यह प्रश्नोत्तर देखें ।

यहां तक ​​कि अगर आपके पास क्लाइंट-साइड ऐप के कोड को संशोधित करने की क्षमता नहीं है, तो भी आप अपने क्लाइंट द्वारा उपयोग किए जाने वाले वेबसर्विस के आधार पर, प्रॉक्सी को प्रशासनिक रूप से सेट करने में सक्षम हो सकते हैं।


1

मानक WCF अनुरेखण / निदान

यदि किसी कारण से आप फिडलर को काम करने में असमर्थ हैं, या अनुरोधों को दूसरे तरीके से लॉग इन करेंगे, तो दूसरा विकल्प मानक WCF ट्रेसिंग कार्यक्षमता का उपयोग करना है। यह एक ऐसी फ़ाइल का उत्पादन करेगा जिसमें एक अच्छा दर्शक होगा।

डॉक्स

Https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/tracing-and-message-logging देखें

विन्यास

अपने कॉन्फिगर में निम्नलिखित जोड़ें, सुनिश्चित करें कि c:\logsमौजूद है, पुनर्निर्माण करें, और अनुरोध करें:

  <system.serviceModel>
    <diagnostics>
      <!-- Enable Message Logging here. -->
      <!-- log all messages received or sent at the transport or service model levels -->
      <messageLogging logEntireMessage="true"
                      maxMessagesToLog="300"
                      logMessagesAtServiceLevel="true"
                      logMalformedMessages="true"
                      logMessagesAtTransportLevel="true" />
    </diagnostics>
  </system.serviceModel>

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information,ActivityTracing"
        propagateActivity="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>

0

मैंने ब्राउजर में सिल्वर लाइट ऐप से सर्विस कॉल की निगरानी के लिए वायर शार्क टूल का इस्तेमाल किया है। लिंक का प्रयास करें स्पष्ट जानकारी देता है

यह आपको पूरे अनुरोध और प्रतिक्रिया सामग्री की निगरानी करने में सक्षम बनाता है।


0

मैंने अभी ब्रैड रेम से पहला उत्तर लेने की कोशिश की और बेसिकहेटबाइंडिंग के तहत web.config में इस सेटिंग में आया:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding bypassProxyOnLocal="False" useDefaultWebProxy="false" proxyAddress="http://127.0.0.1:8888" ...
        ...
      </basicHttpBinding>
    </bindings>
    ...
<system.serviceModel>

आशा है कि यह किसी की मदद करता है।


0

आप HTTP डीबगर के मुफ्त संस्करण का उपयोग कर सकते हैं।

यह प्रॉक्सी नहीं है और आपको web.config में कोई बदलाव करने की आवश्यकता नहीं है।

इसके अलावा, यह दोनों को दिखा सकता है; इनकमिंग और आउटगोइंग HTTP रिक्वेस्ट। HTTP डिबगर फ्री

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.