<p>In this <a href="https://stackoverflow.com/questions/32877/how-to-remove-vsdebuggercausalitydata-data-from-soap-message">question</a> the answer was to flip on a switch that is picked up by the debugger disabling the extraneous header that was causing the problem.  The Microsoft help implies these switched are user generated and does not list any switches.</p>

<pre><code>&lt;configuration&gt;
  &lt;system.diagnostics&gt;
    &lt;switches&gt;
      &lt;add name="Remote.Disable" value="1" /&gt;
    &lt;/switches&gt;
  &lt;/system.diagnostics&gt;
&lt;/configuration&gt; 
</code></pre>

<p>What I would like to know is where the value "Remote.Disable" comes from and how find out what other things can be switched on or off.  Currently it is just some config magic, and I don't like magic.</p>

[{'answer_id': 33677, 'author': 'Kevin Dente', 'author_id': 9, 'author_profile': 'https://Stackoverflow.com/users/9', 'pm_score': 1, 'selected': False, 'text': "<p>You can use Reflector to search for uses of the Switch class and its subclasss (BooleanSwitch, TraceSwitch, etc). The various switches are hardcoded by name, so AFAIK there's no master list somewhere. </p>\n"}, {'answer_id': 33683, 'author': 'Glenn Slaven', 'author_id': 2975, 'author_profile': 'https://Stackoverflow.com/users/2975', 'pm_score': 3, 'selected': True, 'text': '<p>As you suspected, Remote.Disable stops the app from attaching debug info to remote requests.  It\'s defined inside the .NET framework methods that make the SOAP request.</p>\n\n<p>The basic situation is that these switches can be defined anywhere in code, you just need to create a new System.Diagnostics.BooleanSwitch with the name given and the config file can control them.</p>\n\n<p>This particular one is defined in System.ComponentModel.CompModSwitches.DisableRemoteDebugging:</p>\n\n<pre><code>public static BooleanSwitch DisableRemoteDebugging\n{\n    get\n    {\n        if (disableRemoteDebugging == null)\n        {\n            disableRemoteDebugging = new BooleanSwitch("Remote.Disable", "Disable remote debugging for web methods.");\n        }\n        return disableRemoteDebugging;\n    }\n}\n</code></pre>\n\n<p>In your case it\'s probably being called from <em>System.Web.Services.Protocols.RemoteDebugger.IsClientCallOutEnabled()</em>, which is being called by <em>System.Web.Services.Protocols.WebClientProtocol.NotifyClientCallOut</em> which is in turn being called by the Invoke method of <em>System.Web.Services.Protocols.SoapHttpClientProtocol</em></p>\n\n<p>Unfortunately, to my knowledge, short of decompiling the framework &amp; seaching for </p>\n\n<pre><code>new BooleanSwitch\n</code></pre>\n\n<p>or any of the other inheritors of the <em>System.Diagnostics.Switch</em> class,\nthere\'s no easy way to know what switches are defined.  It seems to be a case of searching msdn/google/stack overflow for the specific case</p>\n\n<p>In this case I just used Reflector &amp; searched for the Remote.Disable string</p>\n'}]
['https://Stackoverflow.com/questions/33334', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1834/']