<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Inherited from System.Object</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/sidhartg/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/sidhartg/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:57:43 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Speeding up your CCF Workflow</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/speeding-up-your-ccf-workflow</link>
      <pubDate>Mon, 28 Apr 2008 06:20:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2008/04/28/speeding-up-your-ccf-workflow/</guid>
      <description><![CDATA[CCF Workflows takes several seconds to start for the first time. This is to do with the fundamental...]]></description>
      <content:encoded><![CDATA[<P>CCF Workflows takes several seconds to start for the first time. This is to do with the fundamental .Net feature called JIT. When you first launch the workflow, CCF creates the workflow engine for the first time and starts the engine before working on your request. This eats up so much of processor... remember the JIT compiler compiles the IL instructions only when required?</P>
<P>One workaround for this problem would be warm up your workflow before the user actually uses this. This will help in faster response time from CCF as the required last minute compilations are already done for you and all you will do is to use the cached binary instructions instead of IL.</P>
<P>As always, below is the sample code that does exactly what is mentioned in the above sentence:</P>
<P>Find the line in your desktop.cs file </P><PRE class=code><EM>customerWorkflowManager = (IWorkflowManager)<SPAN style="COLOR: rgb(0,0,255)">this</SPAN>.GetHostedApp(<SPAN style="COLOR: rgb(163,21,21)">"Customer Workflow Manager"</SPAN>);</EM></PRE><A href="https://11011.net/software/vspaste" mce_href="https://11011.net/software/vspaste"></A>
<P>add the following lines below that statement.</P><PRE class=code><EM><SPAN style="COLOR: rgb(0,128,0)">//Modified for warming up the workflow

</SPAN><SPAN style="COLOR: rgb(43,145,175)">ThreadStart</SPAN> ts = <SPAN style="COLOR: rgb(0,0,255)">new</SPAN> <SPAN style="COLOR: rgb(43,145,175)">ThreadStart</SPAN>(ExecuteAsyncWorkflow);
<SPAN style="COLOR: rgb(43,145,175)">Thread</SPAN> wfThread = <SPAN style="COLOR: rgb(0,0,255)">new</SPAN> <SPAN style="COLOR: rgb(43,145,175)">Thread</SPAN>(ts);

wfThread.Start(data);

<SPAN style="COLOR: rgb(0,128,0)">//end of modifications</SPAN></EM></PRE><A href="https://11011.net/software/vspaste" mce_href="https://11011.net/software/vspaste"></A>
<P>Finally, add this method.</P><PRE class=code><EM><SPAN style="COLOR: rgb(0,0,255)">private</SPAN> <SPAN style="COLOR: rgb(0,0,255)">void</SPAN> ExecuteAsyncWorkflow()
{
    System.Reflection.<SPAN style="COLOR: rgb(43,145,175)">MethodInfo</SPAN> method = customerWorkflowManager.GetType().GetMethod(<BR>	<SPAN style="COLOR: rgb(163,21,21)">"DoAction"</SPAN>, <SPAN style="COLOR: rgb(0,0,255)">new</SPAN> <SPAN style="COLOR: rgb(43,145,175)">Type</SPAN>[] { <SPAN style="COLOR: rgb(0,0,255)">typeof</SPAN>(Microsoft.Ccf.Csr.Action), <SPAN style="COLOR: rgb(0,0,255)">typeof</SPAN>(<SPAN style="COLOR: rgb(0,0,255)">string</SPAN>) });
    Microsoft.Ccf.Csr.Action action = <SPAN style="COLOR: rgb(0,0,255)">new</SPAN> Action(-100, <SPAN style="COLOR: rgb(163,21,21)">"Human Workflow Automation"</SPAN>, <SPAN style="COLOR: rgb(163,21,21)">""</SPAN>);
</EM>    <SPAN style="COLOR: rgb(0,128,0)">//TODO: Fill the below ALL CAPS words with proper values or better yet, make a web service call to get a valid workflow xml.<BR>    //      Refer to custom workflow manager project on how to use the web service call.</SPAN></PRE><PRE class=code><SPAN style="COLOR: rgb(0,128,0)">    </SPAN><SPAN style="COLOR: rgb(0,0,255)">string</SPAN> data = <SPAN style="COLOR: rgb(163,21,21)">@"<BR></SPAN><SPAN style="COLOR: rgb(163,21,21)">&lt;Workflow&gt;<BR>&lt;StepName&gt;NAME HERE&lt;/StepName&gt;<BR>&lt;HostedApplicationId&gt;ID FROM DATABASE HERE&lt;/HostedApplicationId&gt;<BR>&lt;HostedApplicationName&gt;VALID APPLICATION NAME HERE&lt;/HostedApplicationName&gt;<BR>&lt;Action&gt;VALID ACTION NAME HERE&lt;/Action&gt;<BR>&lt;/Workflow&gt;"</SPAN>;</PRE>&nbsp;&nbsp;&nbsp;&nbsp;<EM><SPAN style="COLOR: rgb(0,0,255)">try </SPAN><BR>&nbsp;&nbsp;&nbsp; { <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method.Invoke(customerWorkflowManager, <SPAN style="COLOR: rgb(0,0,255)">new</SPAN> <SPAN style="COLOR: rgb(0,0,255)">object</SPAN>[] { action, data }); <BR>&nbsp;&nbsp;&nbsp; } <BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: rgb(0,0,255)">catch</SPAN> (<SPAN style="COLOR: rgb(43,145,175)">Exception</SPAN>)&nbsp;{ }<BR>}</EM> 
<P>This is fairly simple code could save you up to 20 seconds. The tradeoff with this approach (of course all good things have an asterix) you are adding more load during the start up, though the time your solution loads will not change as this is a background thread, but the CPU is now split with one additional thread.</P>
<P>Let me know if you have a better solution to this problem.</P>]]></content:encoded>
    </item>
    <item>
      <title>Adding CCF Agents Programmatically</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/adding-ccf-agents-programmatically</link>
      <pubDate>Sat, 26 Apr 2008 14:46:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2008/04/26/adding-ccf-agents-programmatically/</guid>
      <description><![CDATA[One of the most annoying features for admins with managing CCF is adding Agents. Updating/Deleting...]]></description>
      <content:encoded><![CDATA[<P>One of the most annoying features for admins with managing CCF is adding Agents. Updating/Deleting are less annoying as they are not in bulk most of the times. Even manually adding Agents using CCF Admin Console is not productive when adding more than few users.</P>
<P>CCF Admin Console, internally uses WCF web services (in CCF 2008) to perform database related activities. You can write a custom program consuming these web services to ease your configuration. This is much faster way of handling the agents in the database.</P>
<P>Warning: You should not get carried away with this approach and communicate to the database directly bypassing the webservices or if there is no web service for a desired database operation. This might cause long term problem when the CCF team changes their database. In worst case, it might even void your support.</P>
<P>Now that we know what we should and shouldn't do, let me show some sample code to do the same.</P>
<P>Every installation of CCF 2008 (server) installs several web services and the one we are interested here is AgentWS. Since we know the web service now, it is a simple WCF webmethod invokation.</P>
<P>Following code illustrates how to add user to the database.</P><PRE class=code><EM>            <SPAN style="COLOR: rgb(43,145,175)">AgentWSClient</SPAN> agentService = <SPAN style="COLOR: rgb(0,0,255)">new</SPAN> <SPAN style="COLOR: rgb(43,145,175)">AgentWSClient</SPAN>(<SPAN style="COLOR: rgb(163,21,21)">"BasicHttpBinding_AgentWS"</SPAN>);

            </EM><EM><SPAN style="COLOR: rgb(0,0,255)">try
</SPAN>            {
                <SPAN style="COLOR: rgb(43,145,175)">AgentDetails</SPAN> agentDetail = <SPAN style="COLOR: rgb(0,0,255)">new</SPAN> <SPAN style="COLOR: rgb(43,145,175)">AgentDetails</SPAN>();
                agentDetail.FirstName = <SPAN style="COLOR: rgb(163,21,21)">"John"</SPAN>;
                agentDetail.LastName = <SPAN style="COLOR: rgb(163,21,21)">"Smith"</SPAN>;
                agentDetail.DomainId = <SPAN style="COLOR: rgb(163,21,21)">"contoso\\jsmith"</SPAN>;
                agentDetail.AgentType = 1; <SPAN style="COLOR: rgb(0,128,0)">//1 - Agent, 2 - Admin</SPAN>

                agentService.Add(agentDetail);
            }
            </EM><EM><SPAN style="COLOR: rgb(0,0,255)">finally
</SPAN>            {
                agentService.Close();
            }
</EM></PRE>
<P>As simple as this...</P>
<P>You can probably write a small application that will fetch the user information from the Active Directory or any other&nbsp;list of users&nbsp;and add them all into the CCF database.</P>]]></content:encoded>
    </item>
    <item>
      <title>Reason behind AdapterContextChange()'s failure</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/reason-behind-adaptercontextchanges-failure</link>
      <pubDate>Fri, 21 Dec 2007 02:42:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2007/12/21/reason-behind-adaptercontextchanges-failure/</guid>
      <description><![CDATA[I know very few people are working in CCF currently. But here is an undocumented life saver.
The...]]></description>
      <content:encoded><![CDATA[<P>I know very few people are working in CCF currently. But here is an undocumented life saver.</P>
<P>The Context that is passed in the NotifyContextChange event is a reference to the object and not a value. Most of you might already know this as it is a reference type.<BR>If you have a requirement to update the context based on some user activity and notify the context change to all the applications, you simply invoke the&nbsp;ContextChange or AdapterContextChange methods with appropriate values.</P>
<P>However, there is a catch here. You cannot use the same context reference and trigger/fire&nbsp;the change across all the applications.<BR>Let us take a look at this sample code for clarification.</P>
<P><U>The following code will *NOT* work:</U></P><PRE class=code><EM><SPAN style="COLOR: rgb(0,0,255)">private</SPAN> <SPAN style="COLOR: rgb(43,145,175)">Context</SPAN> _context;

<SPAN style="COLOR: rgb(0,0,255)">public</SPAN> <SPAN style="COLOR: rgb(0,0,255)">void</SPAN> CustomerUpdated(<SPAN style="COLOR: rgb(0,0,255)">string</SPAN> firstName, <SPAN style="COLOR: rgb(0,0,255)">string</SPAN> lastName)
{
    _context[<SPAN style="COLOR: rgb(163,21,21)">"CustomerFirstName"</SPAN>] = firstName;
    _context[<SPAN style="COLOR: rgb(163,21,21)">"CustomerLastName"</SPAN>] = lastName;
               
    <SPAN style="COLOR: rgb(0,0,255)">this</SPAN>.AdapterContextChange(_context);

    <SPAN style="COLOR: rgb(0,0,255)">base</SPAN>.DocumentComplete(url);
}

<SPAN style="COLOR: rgb(0,0,255)">public</SPAN> <SPAN style="COLOR: rgb(0,0,255)">override</SPAN> <SPAN style="COLOR: rgb(0,0,255)">bool</SPAN> NotifyContextChange(<SPAN style="COLOR: rgb(43,145,175)">Context</SPAN> context)
{
    _context = context;
    <SPAN style="COLOR: rgb(0,0,255)">return</SPAN> <SPAN style="COLOR: rgb(0,0,255)">base</SPAN>.NotifyContextChange(context);
}</EM>
</PRE>
<P>This is because, when you invoke the context change method internally current context and the passed context are checked for their reference instead of the value. Since both of them share the same reference.</P>
<P>To rectify the problem, you should explicitly copy the context into a different object and update that.</P>
<P><U>This code will work:</U></P><PRE class=code><EM><SPAN style="COLOR: rgb(0,0,255)">private</SPAN> <SPAN style="COLOR: rgb(43,145,175)">Context</SPAN> _context;

<SPAN style="COLOR: rgb(0,0,255)">public</SPAN> <SPAN style="COLOR: rgb(0,0,255)">void</SPAN> CustomerUpdated(<SPAN style="COLOR: rgb(0,0,255)">string</SPAN> firstName, <SPAN style="COLOR: rgb(0,0,255)">string</SPAN> lastName)
{
    _context[<SPAN style="COLOR: rgb(163,21,21)">"CustomerFirstName"</SPAN>] = firstName;
    _context[<SPAN style="COLOR: rgb(163,21,21)">"CustomerLastName"</SPAN>] = lastName;
               
    <SPAN style="COLOR: rgb(0,0,255)">this</SPAN>.AdapterContextChange(_context);

    <SPAN style="COLOR: rgb(0,0,255)">base</SPAN>.DocumentComplete(url);
}

<SPAN style="COLOR: rgb(0,0,255)">public</SPAN> <SPAN style="COLOR: rgb(0,0,255)">override</SPAN> <SPAN style="COLOR: rgb(0,0,255)">bool</SPAN> NotifyContextChange(<SPAN style="COLOR: rgb(43,145,175)">Context</SPAN> context)
{
    _context = <SPAN style="COLOR: rgb(0,0,255)">new</SPAN> <SPAN style="COLOR: rgb(43,145,175)">Context</SPAN>(context.ContextInformation);
    <SPAN style="COLOR: rgb(0,0,255)">return</SPAN> <SPAN style="COLOR: rgb(0,0,255)">base</SPAN>.NotifyContextChange(context);
}</EM></PRE><PRE class=code>I was not comfortable with this design decision at the beginning as we end up duplicating the context in every adapter we develop. <BR>But, after some thought, this seems to be chosen to gain performance - the tradeoff, however, was memory.</PRE>]]></content:encoded>
    </item>
    <item>
      <title>Method Overloading in WCF</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/method-overloading-in-wcf</link>
      <pubDate>Sat, 01 Sep 2007 05:47:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2007/09/01/method-overloading-in-wcf/</guid>
      <description><![CDATA[WCF solves so many complex problems of the distributing computing, yet when it comes to simple...]]></description>
      <content:encoded><![CDATA[<P>WCF solves so many complex problems of the distributing computing, yet when it comes to simple things like overloading it fumbles. This is not what I say, but what I heard from some developers at my customer's site. So, I thought how can such a small thing could not be achievable in WCF when the underlying platform (.Net framework) support this by design.</P>
<P>After little thought, it is all clear why it does not work the same way it works with compiled languages. Its all the&nbsp;underlying protocols&nbsp;that makes it complex. But, it is not really tough to get this to work.</P>
<P>Here is the sample I worked on to get method overloading with WCF working like it does in C#.</P>
<P>Step 1: I've created a simple service contract with two methods using method overloading.</P><PRE class=code>[<SPAN style="COLOR: rgb(43,145,175)">ServiceContract()]
</SPAN><SPAN style="COLOR: rgb(0,0,255)">public </SPAN><SPAN style="COLOR: rgb(0,0,255)">interface </SPAN><SPAN style="COLOR: rgb(43,145,175)">IMathService
{
    [</SPAN><SPAN style="COLOR: rgb(43,145,175)">OperationContract]
    </SPAN><SPAN style="COLOR: rgb(0,0,255)">int AddNumbers(</SPAN><SPAN style="COLOR: rgb(0,0,255)">int num1, </SPAN><SPAN style="COLOR: rgb(0,0,255)">int num2);
    [</SPAN><SPAN style="COLOR: rgb(43,145,175)">OperationContract]
    </SPAN><SPAN style="COLOR: rgb(0,0,255)">double AddNumbers(</SPAN><SPAN style="COLOR: rgb(0,0,255)">double num1, </SPAN><SPAN style="COLOR: rgb(0,0,255)">double num2);
}</SPAN></PRE>
<P>Step 2: Tried to run the service and this is what I WCF told me...</P>
<P><A href="https://blogs.msdn.com/controlpanel/blogs/$image1.png" mce_href="$image1.png" atomicselection="true"><IMG title=image style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; WIDTH: 240px; HEIGHT: 176px; BORDER-RIGHT-WIDTH: 0px" height=176 alt=image src="https://tk2.storage.msn.com/y1p-PUsZeVWktfPyKn7cTNU0Ymi2HspSqy1lPgjJAYmmOHy-1vLO5a3bE7y4LQjnOYnhGqRJz00EDO3rEsUQ5RzCw" width=240 border=0 mce_src="https://tk2.storage.msn.com/y1p-PUsZeVWktfPyKn7cTNU0Ymi2HspSqy1lPgjJAYmmOHy-1vLO5a3bE7y4LQjnOYnhGqRJz00EDO3rEsUQ5RzCw"></A> </P>
<P>Step 3: As WCF does not allow me to do this in a direct way,&nbsp;I looked at the OperationContract attribute to see if there is something that can help me. To my confidence, there is this property called Name. I've set this value to a unique value for both of these methods. now, the service contract looks like this:</P><PRE class=code>[<SPAN style="COLOR: rgb(43,145,175)">ServiceContract()]
</SPAN><SPAN style="COLOR: rgb(0,0,255)">public </SPAN><SPAN style="COLOR: rgb(0,0,255)">interface </SPAN><SPAN style="COLOR: rgb(43,145,175)">IMathService
{
    [</SPAN><SPAN style="COLOR: rgb(43,145,175)">OperationContract(Name=</SPAN><SPAN style="COLOR: rgb(163,21,21)">"AddIntegers")]
    </SPAN><SPAN style="COLOR: rgb(0,0,255)">int AddNumbers(</SPAN><SPAN style="COLOR: rgb(0,0,255)">int num1, </SPAN><SPAN style="COLOR: rgb(0,0,255)">int num2);
    [</SPAN><SPAN style="COLOR: rgb(43,145,175)">OperationContract(Name=</SPAN><SPAN style="COLOR: rgb(163,21,21)">"AddDoubles")]
    </SPAN><SPAN style="COLOR: rgb(0,0,255)">double AddNumbers(</SPAN><SPAN style="COLOR: rgb(0,0,255)">double num1, </SPAN><SPAN style="COLOR: rgb(0,0,255)">double num2);
}
<A href="https://11011.net/software/vspaste" mce_href="https://11011.net/software/vspaste"></A></SPAN></PRE>
<P>Step 4: Tried to run the service and this is what WCF told me now...</P>
<P><A href="https://blogs.msdn.com/controlpanel/blogs/$image3.png" mce_href="$image3.png" atomicselection="true"><IMG title=image style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; WIDTH: 240px; HEIGHT: 176px; BORDER-RIGHT-WIDTH: 0px" height=176 alt=image src="https://tk2.storage.msn.com/y1p-PUsZeVWktdGGD6LbaoD244IRv3uCeZIE7UaZ1DSr-4gK1BJZW2-TIlq0EmstA8N73076WyPQXgcKinIa1Gkqg" width=240 border=0 mce_src="https://tk2.storage.msn.com/y1p-PUsZeVWktdGGD6LbaoD244IRv3uCeZIE7UaZ1DSr-4gK1BJZW2-TIlq0EmstA8N73076WyPQXgcKinIa1Gkqg"></A> </P>
<P>The problem seemed to be solved. And indeed it is, the generated proxy does not show any discrimination towards these methods. They'll be just like any other method (overloaded methods). Now its all over... Method overloading in WCF is very much possible and is very much simple.</P>
<P>I don't think I need to attach the source code as the only required change is already discussed here.</P>
<P>Note: If you are using WCF always think about messages and not methods. So, this situation should not end up in your design docs. If at all you end up here, you can use the approach suggested in this blog. Thanks Michael for pointing out this.</P>]]></content:encoded>
    </item>
    <item>
      <title>Getting away with client Config in WCF</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/getting-away-with-client-config-in-wcf</link>
      <pubDate>Sat, 01 Sep 2007 05:47:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2007/09/01/getting-away-with-client-config-in-wcf/</guid>
      <description><![CDATA[Introduction
This&nbsp;weblog provides a solution to one of the most common problem faced by...]]></description>
      <content:encoded><![CDATA[<H2><B>Introduction</B></H2>
<P>This&nbsp;weblog provides a solution to one of the most common problem faced by developers while developing their projects involving WCF Services using Visual Studio. 
<P>Background 
<P>To give you a little background on what this is all about… when you are working with WCF services and using Visual Studio for development, it becomes annoying as to how Visual Studio screws up the configuration settings. This is a small problem with an even smaller solution. Hence, it might be the smallest article. 
<P>Using the code 
<P>There are two attachments with this weblog. 
<OL>
<LI>NoConfigWS.zip is the web service. You've to unzip the contents and create a web application using IIS. I'll not go into the details on doing that, you can figure out on your own if you are not familiar by searching the www. 
<LI>NoConfigClient.zip is the client that consumes the NoConfigWS web service. This is a console application that communicates with the service and displays the results back. All you need to do is to unzip the contents and change the app.config file to point your service.</LI></OL>
<H2><B>Problem</B></H2>
<P>This sample will help you in understanding the situation better. 
<P>Before updating (add service reference and changing some values):<PRE class=code><SPAN style="COLOR: rgb(0,0,255)">        &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">binding</SPAN><SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">name</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">BasicHttpBinding_IHelloWorldService</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">closeTimeout</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">00:01:00</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">openTimeout</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">00:01:00</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">receiveTimeout</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">00:10:00</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">sendTimeout</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">00:01:00</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">allowCookies</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">false</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">bypassProxyOnLocal</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">false</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">hostNameComparisonMode</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">StrongWildcard</SPAN>"
<STRONG><EM><SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxBufferSize</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">131072</SPAN>"</EM></STRONG><SPAN style="COLOR: rgb(0,0,255)"><STRONG><EM> 
</EM></STRONG>          </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxBufferPoolSize</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">524288</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
<STRONG><EM>          </EM></STRONG></SPAN><STRONG><EM><SPAN style="COLOR: rgb(255,0,0)">maxReceivedMessageSize</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"><SPAN style="COLOR: rgb(0,0,255)">131072</SPAN></SPAN>"
</EM></STRONG><SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">messageEncoding</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">Text</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">textEncoding</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">utf-8</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">transferMode</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">Buffered</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">useDefaultWebProxy</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">true</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">&gt;
          &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">readerQuotas</SPAN><SPAN style="COLOR: rgb(0,0,255)"> 
            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxDepth</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">32</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxStringContentLength</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">8192</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxArrayLength</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">16384</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxBytesPerRead</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">4096</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxNameTableCharCount</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">16384</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> /&gt;
          &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">security</SPAN><SPAN style="COLOR: rgb(0,0,255)"> </SPAN><SPAN style="COLOR: rgb(255,0,0)">mode</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">None</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">&gt;
            &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">transport</SPAN><SPAN style="COLOR: rgb(0,0,255)"> 
              </SPAN><SPAN style="COLOR: rgb(255,0,0)">clientCredentialType</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">None</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
              </SPAN><SPAN style="COLOR: rgb(255,0,0)">proxyCredentialType</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">None</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">              </SPAN><SPAN style="COLOR: rgb(255,0,0)">realm</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>""<SPAN style="COLOR: rgb(0,0,255)"> /&gt;
            &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">message</SPAN><SPAN style="COLOR: rgb(0,0,255)"> 
              </SPAN><SPAN style="COLOR: rgb(255,0,0)">clientCredentialType</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">UserName</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
              </SPAN><SPAN style="COLOR: rgb(255,0,0)">algorithmSuite</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">Default</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> /&gt;
          &lt;/</SPAN><SPAN style="COLOR: rgb(163,21,21)">security</SPAN><SPAN style="COLOR: rgb(0,0,255)">&gt;
        &lt;/</SPAN><SPAN style="COLOR: rgb(163,21,21)">binding</SPAN><SPAN style="COLOR: rgb(0,0,255)">&gt;</SPAN></PRE><A href="https://11011.net/software/vspaste" mce_href="https://11011.net/software/vspaste"></A>
<P>After changes (and updating service reference):<PRE class=code><SPAN style="COLOR: rgb(0,0,255)">        &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">binding</SPAN><SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">name</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">BasicHttpBinding_IHelloWorldService</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">closeTimeout</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">00:01:00</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">openTimeout</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">00:01:00</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">receiveTimeout</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">00:10:00</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">sendTimeout</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">00:01:00</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">allowCookies</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">false</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">bypassProxyOnLocal</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">false</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">hostNameComparisonMode</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">StrongWildcard</SPAN>"
<STRONG><EM><SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxBufferSize</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">65536</SPAN>"</EM></STRONG><SPAN style="COLOR: rgb(0,0,255)"><STRONG><EM> 
</EM></STRONG>          </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxBufferPoolSize</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">524288</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
<STRONG><EM>          </EM></STRONG></SPAN><STRONG><EM><SPAN style="COLOR: rgb(255,0,0)">maxReceivedMessageSize</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">65536</SPAN>"
</EM></STRONG><SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">messageEncoding</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">Text</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">textEncoding</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">utf-8</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
          </SPAN><SPAN style="COLOR: rgb(255,0,0)">transferMode</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">Buffered</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">          </SPAN><SPAN style="COLOR: rgb(255,0,0)">useDefaultWebProxy</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">true</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">&gt;
          &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">readerQuotas</SPAN><SPAN style="COLOR: rgb(0,0,255)"> 
            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxDepth</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">32</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxStringContentLength</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">8192</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxArrayLength</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">16384</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxBytesPerRead</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">4096</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
            </SPAN><SPAN style="COLOR: rgb(255,0,0)">maxNameTableCharCount</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">16384</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> /&gt;
          &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">security</SPAN><SPAN style="COLOR: rgb(0,0,255)"> </SPAN><SPAN style="COLOR: rgb(255,0,0)">mode</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">None</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">&gt;
            &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">transport</SPAN><SPAN style="COLOR: rgb(0,0,255)"> 
              </SPAN><SPAN style="COLOR: rgb(255,0,0)">clientCredentialType</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">None</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
              </SPAN><SPAN style="COLOR: rgb(255,0,0)">proxyCredentialType</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">None</SPAN>"
<SPAN style="COLOR: rgb(0,0,255)">              </SPAN><SPAN style="COLOR: rgb(255,0,0)">realm</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>""<SPAN style="COLOR: rgb(0,0,255)"> /&gt;
            &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">message</SPAN><SPAN style="COLOR: rgb(0,0,255)"> 
              </SPAN><SPAN style="COLOR: rgb(255,0,0)">clientCredentialType</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">UserName</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> 
              </SPAN><SPAN style="COLOR: rgb(255,0,0)">algorithmSuite</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">Default</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> /&gt;
          &lt;/</SPAN><SPAN style="COLOR: rgb(163,21,21)">security</SPAN><SPAN style="COLOR: rgb(0,0,255)">&gt;
        &lt;/</SPAN><SPAN style="COLOR: rgb(163,21,21)">binding</SPAN><SPAN style="COLOR: rgb(0,0,255)">&gt;</SPAN></PRE><A href="https://11011.net/software/vspaste" mce_href="https://11011.net/software/vspaste"></A>
<P>This becomes really painful if you had to change some settings (for example maxReceivedMessageSize or maxStringContentLength) to a different value than the default for some of the services. Every time you update the service reference, Visual Studio will replace the updated settings with the defaults. For situations where multiple developers are developing the services, this problem only grows exponentially. 
<H2><B>Solution</B></H2>
<P>There are several solutions for this problem, and the one presented here is just one of them. 
<P>Whatever is your development environment to create your services, whether using Visual Studio or directly generate it, SVCUtil will generate multiple constructors for the proxy class (five to be exact). Guess what, one of them takes a Binding and EndpointAddress as parameters.<PRE class=code>        <SPAN style="COLOR: rgb(0,0,255)">public</SPAN> HelloWorldServiceClient()
        {
        }
        
        <SPAN style="COLOR: rgb(0,0,255)">public</SPAN> HelloWorldServiceClient(<SPAN style="COLOR: rgb(0,0,255)">string</SPAN> endpointConfigurationName) : 
                <SPAN style="COLOR: rgb(0,0,255)">base</SPAN>(endpointConfigurationName)
        {
        }
        
        <SPAN style="COLOR: rgb(0,0,255)">public</SPAN> HelloWorldServiceClient(<SPAN style="COLOR: rgb(0,0,255)">string</SPAN> endpointConfigurationName, <SPAN style="COLOR: rgb(0,0,255)">string</SPAN> remoteAddress) : 
                <SPAN style="COLOR: rgb(0,0,255)">base</SPAN>(endpointConfigurationName, remoteAddress)
        {
        }
        
        <SPAN style="COLOR: rgb(0,0,255)">public</SPAN> HelloWorldServiceClient(<SPAN style="COLOR: rgb(0,0,255)">string</SPAN> endpointConfigurationName, <SPAN style="COLOR: rgb(43,145,175)">EndpointAddress</SPAN> remoteAddress) : 
                <SPAN style="COLOR: rgb(0,0,255)">base</SPAN>(endpointConfigurationName, remoteAddress)
        {
        }
        
<STRONG><EM>        <SPAN style="COLOR: rgb(0,0,255)">public</SPAN> HelloWorldServiceClient(<SPAN style="COLOR: rgb(43,145,175)">Binding</SPAN> binding, <SPAN style="COLOR: rgb(43,145,175)">EndpointAddress</SPAN> remoteAddress) : 
                <SPAN style="COLOR: rgb(0,0,255)">base</SPAN>(binding, remoteAddress)
        {
        }
</EM></STRONG>        
Now, our job is to create these objects and create the proxy by passing these objects. </PRE><PRE class=code>            HelloWorldServiceClient helloWorldClient = <SPAN style="COLOR: rgb(0,0,255)">new</SPAN> HelloWorldServiceClient(
                <SPAN style="COLOR: rgb(43,145,175)">ProxyHelper</SPAN>.GetBinding(),
                <SPAN style="COLOR: rgb(43,145,175)">ProxyHelper</SPAN>.GetEndpoint() );
</PRE><A href="https://11011.net/software/vspaste" mce_href="https://11011.net/software/vspaste"></A>
<P>GetBinding() and GetEndpoint() are helper methods I’ve used to create those objects. The complete source code for this article is available as a download. 
<P>With this approach, your final Config file would be as clean as follows:<PRE class=code><SPAN style="COLOR: rgb(0,0,255)">&lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">configuration</SPAN><SPAN style="COLOR: rgb(0,0,255)">&gt;
  &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">appSettings</SPAN><SPAN style="COLOR: rgb(0,0,255)">&gt;
    &lt;</SPAN><SPAN style="COLOR: rgb(163,21,21)">add</SPAN><SPAN style="COLOR: rgb(0,0,255)"> </SPAN><SPAN style="COLOR: rgb(255,0,0)">key</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">webserviceURL</SPAN>"<SPAN style="COLOR: rgb(0,0,255)"> </SPAN><SPAN style="COLOR: rgb(255,0,0)">value</SPAN><SPAN style="COLOR: rgb(0,0,255)">=</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">https://localhost/NoConfigWS/Service.svc</SPAN>"<SPAN style="COLOR: rgb(0,0,255)">/&gt;
  &lt;/</SPAN><SPAN style="COLOR: rgb(163,21,21)">appSettings</SPAN><SPAN style="COLOR: rgb(0,0,255)">&gt;
&lt;/</SPAN><SPAN style="COLOR: rgb(163,21,21)">configuration</SPAN><SPAN style="COLOR: rgb(0,0,255)">&gt;</SPAN></PRE><A href="https://11011.net/software/vspaste" mce_href="https://11011.net/software/vspaste"></A>
<H2><B>Summary</B></H2>
<P>This, IMO, is much cleaner for your end user to maintain and by the way, who better knows the advanced Config settings than the developer (and ofcourse, the advanced network administrators) 
<P>Once done, you can rest in peace… I mean work on your services without ever worrying about Visual Studio playing with your Config file anymore.</P>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/04/68/50/90/Downloads.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-04-68-50-90/Downloads.zip">Downloads.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>WSDL for WCF Service</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/wsdl-for-wcf-service</link>
      <pubDate>Sun, 08 Apr 2007 22:10:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2007/04/08/wsdl-for-wcf-service/</guid>
      <description><![CDATA[This can be tricky at times. 
If all you want is the basic communication WSDL, you can get it by...]]></description>
      <content:encoded><![CDATA[<P>This can be tricky at times. 
<P>If all you want is the basic communication WSDL, you can get it by appending ?WSDL to the .svc file. This will output the required WSDL. A sample for this would be something like: <A href="https://localhost/MyService/Service.svc?WSDL"><FONT color=#0066a7>https://localhost/MyService/Service.svc?WSDL</FONT></A> 
<P>But sometimes you want to see everything that is produced. Especially, if you are used to ASMX way of development, you'd want to see the complete WSDL instead of the communicaiton portion. Here is where WCF strikes. 
<P>There is not just one, but several url's you need to browse before getting the required stuff. 
<P>First check in the content if you have any additional WSDL, or you can simply do a brute-force method. 
<P><A href="https://localhost/MyService/Service.svc?WSDL=WSDL0"><FONT color=#0066a7>https://localhost/MyService/Service.svc?WSDL</FONT></A><A href="https://localhost/MyService/Service.svc?WSDL=WSDL0"><STRONG><FONT color=#0066a7>=WSDL0</FONT></STRONG></A> will give you additional information. There might be times (depending on your service) you should be looking for WSDL1. No point playing around as this is what the most you can go through. 
<P>Now, all you have is the complete WSDL, though in different files. If you look into the content, you still miss the type information (if you are using any custom data contracts). This is where your probing power will help you. 
<P>Look into the WSDL0 file to check for the XSD links. If you are lazy, again retort to the brute-force. 
<P><A href="https://localhost/MyServoce/Service.svc?XSD=XSD0"><FONT color=#0066a7>https://localhost/MyServoce/Service.svc<STRONG>?XSD=XSD0</STRONG></FONT></A><STRONG>&nbsp;</STRONG>will give you first level information of types. Depending on your case, you might want to look for XSD1 and XSD2 to get the complete information. Again, no point in playing around as this the max you can get. 
<P>When are done with this, you've all the information requried. </P>]]></content:encoded>
    </item>
    <item>
      <title>No More DLL Hell - The Song</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/no-more-dll-hell-the-song</link>
      <pubDate>Tue, 10 Oct 2006 06:18:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2006/10/10/no-more-dll-hell-the-song/</guid>
      <description><![CDATA[Spike Xavier &amp; Dan Wahlin came up with this song while&nbsp;carpooling to their work...&nbsp;Is...]]></description>
      <content:encoded><![CDATA[<P>Spike Xavier &amp; Dan Wahlin came up with this song while&nbsp;carpooling to their work...&nbsp;<BR>Is starts like a rock song, then loses track. They have however tried to keep onto the same genre, but...</P>
<P>They realized that they created a new genre of music and promply gave it the name Heavy <STRONG>.Net</STRONG>al</P>
<P><A class="" title="Click here" href="https://www.interfacett.com/dllhell/" target=_blank mce_href="https://www.interfacett.com/dllhell/">Check this link</A> for the song</P>]]></content:encoded>
    </item>
    <item>
      <title>Google... I'm really feeling lucky today :)</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/google-im-really-feeling-lucky-today</link>
      <pubDate>Tue, 10 Oct 2006 01:47:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2006/10/10/google-im-really-feeling-lucky-today/</guid>
      <description><![CDATA[Long long ago... when people tried "Failure" in the search box and tried their luck (I'm Feeling...]]></description>
      <content:encoded><![CDATA[<P>Long long ago... when people tried "Failure" in the search box and tried their luck (I'm Feeling lucky), they were directed to President Bush related website... How obvious!!!<BR>And they say... history repeats... and here is another proof...</P>
<P>Try "Search" in the searchbox and try your luck. I'm sure you'll Live with the result.</P>
<P>It seems Google... is now feeling the heat... Long LIVE.<BR>Not sure how many days this will survive... So guys try this... fast</P>]]></content:encoded>
    </item>
    <item>
      <title>Using Windows Form with InfoPath 2003</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/using-windows-form-with-infopath-2003</link>
      <pubDate>Mon, 02 Oct 2006 06:58:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2006/10/02/using-windows-form-with-infopath-2003/</guid>
      <description><![CDATA[InfoPath 2003 does not provide any password field. So, storing passwords on the form is not...]]></description>
      <content:encoded><![CDATA[<P>InfoPath 2003 does not provide any password field. So, storing passwords on the form is not recommended as it is in clear text.</P>
<P>To have something really critical as passwords on the InfoPath forms is not a straightforward task.<BR>I've used a workaround for this.</P>
<P>I'll showup a Windows Form and capture the credentials on that form, encrypt the credentials there and save that encrypted information back on the InfoPath form. This way, the user will never get to read the password in clear text.</P>
<P>Attached is the sample InfoPath form which opens a Windows Form to capture the credentials. I've removed all the encryption code from that to keep it simple and straight forward. Please let me know if there are any better ways to do this or you want more information about this...</P>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/00/78/48/48/WinForms.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-00-78-48-48/WinForms.zip">WinForms.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Using user roles with InfoPath 2003</title>
      <link>https://docs.microsoft.com/archive/blogs/sidhartg/using-user-roles-with-infopath-2003</link>
      <pubDate>Fri, 08 Sep 2006 07:29:00 GMT</pubDate>
      <dc:creator><![CDATA[Sid Gundavarapu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sidhartg/2006/09/08/using-user-roles-with-infopath-2003/</guid>
      <description><![CDATA[Lab 7&nbsp;of the InfoPath labs discuss about the using user roles with InfoPath.
This is one of...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Verdana size=2><A href="https://msdn.microsoft.com/office/program/infopath/2003/learn/default.aspx?pull=/library/en-us/odc_ip2003_tr/html/odc_inf_lab_07.asp">Lab 7</A>&nbsp;of the InfoPath labs discuss about the using user roles with InfoPath.</FONT></P>
<P><FONT face=Verdana size=2>This is one of the most useful features in InfoPath. You can do anything with this based on the role. For example, the admin user can be shown some admin views which are not visible for a normal user.</FONT></P>
<P><FONT face=Verdana size=2>We can even get this information in the attached code by using the following api:</FONT></P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT face=Verdana><FONT size=2><FONT color=#0000ff>bool</FONT> userRole = thisApplication.User.IsUserMemberOf(<FONT color=#800000>@"Domain\Group"</FONT>);</FONT></FONT></P>
<P><FONT face=Verdana><FONT size=2><FONT color=#0000ff>if</FONT> (userRole)<BR></FONT></FONT><FONT face=Verdana><FONT size=2>{<BR></FONT></FONT><FONT face=Verdana size=2>&nbsp;&nbsp;&nbsp;<FONT color=#008000>//do something cool here</FONT><BR></FONT><FONT face=Verdana><FONT size=2>}</FONT></FONT></P></BLOCKQUOTE>
<P dir=ltr><FONT face=Verdana size=2>However, there is a catch here. This works only if the user who is accessing the form and the group specified in the user roles are of the same domain.</FONT></P>
<P dir=ltr><FONT face=Verdana size=2>So, the following are the valid and invalid combinations</FONT></P>
<P dir=ltr><FONT face=Verdana size=2>Invalid Combination:</FONT></P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P dir=ltr><FONT face=Verdana size=2>User: <FONT color=#ff0000>AMERICA\Employees<BR><FONT color=#000000>Group: </FONT>ASIA\SecurityGroup</FONT></FONT></P></BLOCKQUOTE>
<P dir=ltr><FONT face=Verdana color=#000000 size=2>Valid Combination:</FONT></P><FONT face=Verdana size=2>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P dir=ltr><FONT face=Verdana size=2>User: <FONT color=#ff0000>AMERICA\Employees<BR><FONT color=#000000>Group: </FONT>AMERICA\SecurityGroup</FONT></FONT></P></BLOCKQUOTE></FONT>]]></content:encoded>
    </item>
  </channel>
</rss>