<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>David_Bennett : Indigo</title><link>http://blogs.technet.com/david_bennett/archive/tags/Indigo/default.aspx</link><description>Tags: Indigo</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>How to turn on debug exceptions with WCF</title><link>http://blogs.technet.com/david_bennett/archive/2006/11/12/how-to-turn-on-debug-exceptions-with-wcf.aspx</link><pubDate>Mon, 13 Nov 2006 08:54:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:514041</guid><dc:creator>David_Bennett</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/david_bennett/comments/514041.aspx</comments><wfw:commentRss>http://blogs.technet.com/david_bennett/commentrss.aspx?PostID=514041</wfw:commentRss><description>&lt;P&gt;It is possible to see exceptions passed back in the messages sent to the service.&amp;nbsp; This makes it a lot easier to debug multi-peer applications.&amp;nbsp; The way to do this is to add into the web.config file the section.&amp;nbsp; You can see in the following config section that the behavior &lt;SPAN class=identifier&gt;&amp;lt;serviceDebug&amp;nbsp;includeExceptionDetailInFaults&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"true" /&amp;gt; is defined, this sets up the system to include exception details in the return faults.&amp;nbsp; If you do this set this up, make sure you remove it when you deploy your code into the wild.&amp;nbsp; Finding exception info can be used to find ways to exploit your server based on stack traces.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class=dotnetcoders-code style="PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;system&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;serviceModel&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;services&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;service&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;name&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"OneCareStatus.LogUploadService"&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;behaviorConfiguration&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"UploadServiceBehavior"&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;endpoint&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;address&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;""&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;contract&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"OneCareStatus.ILogUploadService"&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;binding&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"wsHttpBinding"&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;bindingConfiguration&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"myHttpBinding"&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;service&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;service&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;name&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"OneCareStatus.FamilySafetyService"&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;behaviorConfiguration&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"UploadServiceBehavior"&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;endpoint&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;address&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;""&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;contract&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"WpcSettings.IWpcSettingsService"&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;binding&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"wsHttpBinding"&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;bindingConfiguration&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"myHttpBinding"&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;service&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;services&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;bindings&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;wsHttpBinding&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;binding&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;name&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"myHttpBinding"&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN class=identifier&gt;security&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;mode&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"None"&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN class=identifier&gt;reliableSession&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;enabled&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"true"&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;binding&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;wsHttpBinding&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;bindings&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;behaviors&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;serviceBehaviors&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;behavior&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;name&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"UploadServiceBehavior"&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;serviceMetadata&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;httpGetEnabled&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"true"&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=identifier&gt;serviceDebug&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;includeExceptionDetailInFaults&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=string&gt;"true"&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;behavior&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;serviceBehaviors&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;behaviors&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN class=punctuation&gt;/&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;system&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;serviceModel&lt;/SPAN&gt;&amp;gt; &lt;BR&gt;&lt;/DIV&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=514041" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/david_bennett/archive/tags/DotNet/default.aspx">DotNet</category><category domain="http://blogs.technet.com/david_bennett/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>Duplex calls in indigo beta 1</title><link>http://blogs.technet.com/david_bennett/archive/2005/05/13/404931.aspx</link><pubDate>Fri, 13 May 2005 21:07:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:404931</guid><dc:creator>David_Bennett</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/david_bennett/comments/404931.aspx</comments><wfw:commentRss>http://blogs.technet.com/david_bennett/commentrss.aspx?PostID=404931</wfw:commentRss><description>&lt;P&gt;There are two things you need to remember when making a duplex contract under indigo beta 1, the first is that you can only use one way calls on the contract and you also need to specify the callback contract in the main contract.&lt;/P&gt;
&lt;P&gt;On the client side to open a call to a duplex contract you need to use the CreateDuplexChannel call on the ChannelFactory which specifies a service to callback on&amp;nbsp;and to get the channel to talk back on on the service side you use the OperationContext.Current.GetCallbackChannel&amp;lt;CallbackContract&amp;gt; call.&lt;/P&gt;
&lt;P&gt;Here is the contract to be used:&lt;/P&gt;
&lt;DIV class=dotnetcoders-code style="PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"&gt;&lt;SPAN class=keyword&gt;interface&lt;/SPAN&gt; IPong &lt;BR&gt;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;[&lt;/SPAN&gt;OperationContract&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;IsOneWay&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;true&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;]&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; Pong&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;int&lt;/SPAN&gt; n&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;SPAN class=punctuation&gt;[&lt;/SPAN&gt;ServiceContract&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;CallbackContract&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;typeof&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;IPong&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;]&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=keyword&gt;interface&lt;/SPAN&gt; IPing &lt;BR&gt;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;[&lt;/SPAN&gt;OperationContract&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;IsOneWay&lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;true&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;]&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; Ping&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;int&lt;/SPAN&gt; n&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;The [ServiceContract] attribute has the CallbackContract attrbribute associated with it and this lets you specify the callback contract to use to talk back to the client.&amp;nbsp; If this is specified on a contract then you must use CreateDuplexChannel to open a connection to the channel, using CreateChannel will throw an exception saying that you need to use a duplex contract.&lt;/P&gt;
&lt;P&gt;The service will look like this:&lt;/P&gt;
&lt;DIV class=dotnetcoders-code style="PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"&gt;&lt;SPAN class=punctuation&gt;[&lt;/SPAN&gt;ServiceBehavior&lt;SPAN class=punctuation&gt;]&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=keyword&gt;class&lt;/SPAN&gt; PingService &lt;SPAN class=punctuation&gt;:&lt;/SPAN&gt; IPing &lt;BR&gt;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; Ping&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;int&lt;/SPAN&gt; n&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;WriteLine&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"Ping {0}"&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; n&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;if&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;n &amp;lt; &lt;SPAN class=number&gt;0&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OperationContext&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Current&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;GetCallbackChannel&amp;lt;IPong&amp;gt;&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Pong&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;n&lt;SPAN class=punctuation&gt;+&lt;/SPAN&gt;&lt;SPAN class=number&gt;1&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;else&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;if&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;n &amp;gt; &lt;SPAN class=number&gt;0&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OperationContext&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Current&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;GetCallbackChannel&amp;lt;IPong&amp;gt;&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Pong&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;n&lt;SPAN class=punctuation&gt;-&lt;/SPAN&gt;&lt;SPAN class=number&gt;1&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;This uses the callback channel to call back onto the client.&amp;nbsp; When the client opens up a channel on the client side it needs to specify an instance of the IPong interface to talk back to.&amp;nbsp; This is the code that will be called and used the the duplex channel request comes in from the service.&lt;/P&gt;
&lt;DIV class=dotnetcoders-code style="PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"&gt;&lt;SPAN class=keyword&gt;class&lt;/SPAN&gt; App &lt;BR&gt;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; MakeChannel&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PongCallback &lt;SPAN class=identifier&gt;pong&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;new&lt;/SPAN&gt; PongCallback&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPingChannel &lt;SPAN class=identifier&gt;ping&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt; ChannelFactory&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;CreateDuplexChannel&amp;lt;IPingChannel&amp;gt;&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;pong&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; TcpAddress&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; TcpBinding&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class=keyword&gt;using&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=identifier&gt;ping&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class=identifier&gt;ping&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Ping&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=number&gt;5&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;WriteLine&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"Press a key to exit"&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;ReadKey&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class=identifier&gt;ping&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Close&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;SPAN class=keyword&gt;class&lt;/SPAN&gt; PongCallback &lt;SPAN class=punctuation&gt;:&lt;/SPAN&gt; IPong &lt;BR&gt;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; Pong&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;int&lt;/SPAN&gt; n&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;WriteLine&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"Pong {0}"&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; n&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;if&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;n &amp;lt; &lt;SPAN class=number&gt;0&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OperationContext&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Current&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;GetCallbackChannel&amp;lt;IPingChannel&amp;gt;&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Ping&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;n&lt;SPAN class=punctuation&gt;+&lt;/SPAN&gt;&lt;SPAN class=number&gt;1&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;else&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;if&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;n &amp;gt; &lt;SPAN class=number&gt;0&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OperationContext&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Current&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;GetCallbackChannel&amp;lt;IPingChannel&amp;gt;&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Ping&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;n&lt;SPAN class=punctuation&gt;-&lt;/SPAN&gt;&lt;SPAN class=number&gt;1&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=404931" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/david_bennett/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>Different types of InstanceModes and ConcurrencyModes inside Indigo</title><link>http://blogs.technet.com/david_bennett/archive/2005/04/21/404042.aspx</link><pubDate>Thu, 21 Apr 2005 22:07:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:404042</guid><dc:creator>David_Bennett</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/david_bennett/comments/404042.aspx</comments><wfw:commentRss>http://blogs.technet.com/david_bennett/commentrss.aspx?PostID=404042</wfw:commentRss><description>&lt;P&gt;Indigo has five different types of instances modes than be used inside the system.&amp;nbsp; The default liftetime, if none is specified, is PerCall.&amp;nbsp; They are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;PerCall&lt;/LI&gt;
&lt;LI&gt;PrivateSession&lt;/LI&gt;
&lt;LI&gt;SharedSession&lt;/LI&gt;
&lt;LI&gt;Singleton&lt;/LI&gt;
&lt;LI&gt;Well known&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The PerCall lifetime means that each time a call comes into the system a new instance is created of the service and a new ServiceSite that is associated with it is created.&amp;nbsp; The second two types of instance lifetime only work when there is a session associated with the channel, a session is created when ReliableMessaging is enabled on the bindings.&amp;nbsp; The PrivateSession lifetime means the instance and site stick around for the entire duration of the session, so this usualy means the duration of the channel.&amp;nbsp; A SharedSession means that the endpoint reference to the service can be generated on the client side by using ResolveInstance().&amp;nbsp; This endpoint reference can then be passed onto other clients or other channels and used to reference the specific endpoint on the remote side.&amp;nbsp; A singleton means that there will only ever be one of the ServiceSite created on the remote side and this will be used for the entire duration of the servicehost.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The well known lifetime is a variation on singleton where the instance is created before hand and passed into the ServiceHost as a specific instance when it is created.&amp;nbsp; This instance is then used in all cases where the instance is needed to be referenced.&amp;nbsp; A well known instance must have a [ServiceBehavior(InstanceMode = InstanceMode.Singleton)] set on the service.&lt;/P&gt;
&lt;P&gt;If the InstanceMode is set to PrivateSession of SharedSession the system will throw an exception when you try and setup a binding on the service side that does not support a session.&amp;nbsp; They do not have a fall back behavior if the incoming channel does not contain a session and will cause an exception to be thrown on the client side.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=404042" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/david_bennett/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>Creating a custom instance of a Service inside Indigo</title><link>http://blogs.technet.com/david_bennett/archive/2005/04/14/403729.aspx</link><pubDate>Thu, 14 Apr 2005 22:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:403729</guid><dc:creator>David_Bennett</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/david_bennett/comments/403729.aspx</comments><wfw:commentRss>http://blogs.technet.com/david_bennett/commentrss.aspx?PostID=403729</wfw:commentRss><description>&lt;P&gt;&amp;nbsp;When you setup an Indigo service in the default way, it is not possible to use anything other than the default constructor for creating your object.&amp;nbsp; There are two ways you can setup a custom object to use as your service instance, the first is to use a well known object as the service when you add the endpoint.&amp;nbsp; This means that the instance effectively operates as if it is a singleton, but you control which object it uses as the singleton.&amp;nbsp; To achieve this behavior when you setup a ServiceHost&amp;lt;T&amp;gt; you pass in a T to the constructor.&lt;/P&gt;
&lt;P&gt;The second mechanism you can use to setup your own object for the system is that you can hook into the IServiceDispatcher code and return your own instance from the GetInstance call.&amp;nbsp; You can return anything you like from the GetInstance call, but it must conform to the originaly specified contract and must be of the correct type, or the calls will not be made on it.&lt;/P&gt;
&lt;P&gt;Some example code of how to hook up the GetObject call follows.&amp;nbsp; You are also informed when an object is Released in case you want to do some pooling.&amp;nbsp; If you hook up the GetObject and ReleaseObject calls you will need to control yourself when the Dispose is called on the objects and any other cleanup that is done on the service instance once it is released.&lt;/P&gt;
&lt;DIV class=dotnetcoders-code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;[&lt;/SPAN&gt;ServiceBehavior&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;InstanceMode &lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt; InstanceMode&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;PerCall&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;]&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;[&lt;/SPAN&gt;CLSCompliant&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;false&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;]&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;partial&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;class&lt;/SPAN&gt; ServiceCallTest &lt;SPAN class=punctuation&gt;:&lt;/SPAN&gt; IInstanceProvider&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; ISiteInitializer&lt;SPAN class=punctuation&gt;,&lt;br&gt;&lt;/SPAN&gt; IContractBehavior&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; IServiceTest &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; Bar&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;string&lt;/SPAN&gt; n&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Console&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;WriteLine&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"Bar("&lt;/SPAN&gt; &lt;SPAN class=punctuation&gt;+&lt;/SPAN&gt; n &lt;SPAN class=punctuation&gt;+&lt;/SPAN&gt; &lt;SPAN class=string&gt;")"&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;return&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=preprocessor&gt;#region IContractBehavior Members &lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; BindProxy&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;ContractDescription &lt;SPAN class=identifier&gt;desc&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; System&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;ServiceModel&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;ProxyBehavior &lt;SPAN class=identifier&gt;proxy&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; BindDispatch&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;ContractDescription &lt;SPAN class=identifier&gt;desc&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; System&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;ServiceModel&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;DispatchBehavior &lt;SPAN class=identifier&gt;dispatch&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=identifier&gt;dispatch&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;InstanceProvider &lt;SPAN class=punctuation&gt;=&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;this&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=identifier&gt;dispatch&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;SiteInitializers&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Add&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;this&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=preprocessor&gt;#endregion &lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;object&lt;/SPAN&gt; GetInstance&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;ServiceSite &lt;SPAN class=identifier&gt;site&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; Message &lt;SPAN class=identifier&gt;incoming&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Console&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;WriteLine&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"GetObject."&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;return&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;new&lt;/SPAN&gt; ServiceCallTest&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; ReleaseInstance&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;ServiceSite &lt;SPAN class=identifier&gt;site&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;object&lt;/SPAN&gt; &lt;SPAN class=identifier&gt;instanct&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Console&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;WriteLine&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"ReleaseObject."&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=keyword&gt;public&lt;/SPAN&gt; &lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; Initialize&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;ServiceSite &lt;SPAN class=identifier&gt;site&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;,&lt;/SPAN&gt; Message &lt;SPAN class=identifier&gt;mess&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;{&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;Console&lt;SPAN class=punctuation&gt;.&lt;/SPAN&gt;WriteLine&lt;SPAN class=punctuation&gt;(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"Initialize."&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;)&lt;/SPAN&gt;&lt;SPAN class=punctuation&gt;;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=punctuation&gt;}&lt;/SPAN&gt; &lt;BR&gt;&lt;/DIV&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=403729" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/david_bennett/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>MaxConnections standard bindings and throttling</title><link>http://blogs.technet.com/david_bennett/archive/2005/04/09/403542.aspx</link><pubDate>Sat, 09 Apr 2005 23:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:403542</guid><dc:creator>David_Bennett</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/david_bennett/comments/403542.aspx</comments><wfw:commentRss>http://blogs.technet.com/david_bennett/commentrss.aspx?PostID=403542</wfw:commentRss><description>Throttling and the standard bindings inside the Indigo CTP allow you to
set and control the maximum number of connections coming into the
system.&amp;nbsp; This is only settable on a few of the standard bindings,
like NetProfileNamedPipeBinding and NetProfileTcpBinding, however the
default value for these is 10.&amp;nbsp; So if you are using these bindings
and expect your web servive to get much activity you should increase
the number.&lt;p&gt;
These bindins also play a part in how security works, security sets up
a second parallel connections so if you set your MaxConnections to be 1
and try to connect to the service with a secure channel, it will
timeout and not connect.&lt;/p&gt;&lt;p&gt;
To set the max connections on the bindings is quite easy, you just do this:&lt;br&gt;

&lt;/p&gt;&lt;div class="dotnetcoders-code"&gt;NetProfileTcpBinding &lt;span class="identifier"&gt;frog&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="keyword"&gt;new&lt;/span&gt; NetProfileTcpBinding&lt;span class="punctuation"&gt;(&lt;/span&gt;&lt;span class="punctuation"&gt;)&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;
&lt;br&gt;&lt;span class="identifier"&gt;frog&lt;/span&gt;&lt;span class="punctuation"&gt;.&lt;/span&gt;MaxConnections &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="number"&gt;30&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/div&gt;
To set the MaxConnections on the host when you setup the ServiceHost
class you access the Throttling property and set connection inside
there.&lt;p&gt;
&lt;/p&gt;&lt;div class="dotnetcoders-code"&gt;ServiceHost&amp;lt;MyService&amp;gt; &lt;span class="identifier"&gt;womble&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="keyword"&gt;new&lt;/span&gt; ServiceHost&amp;lt;MyService&amp;gt;&lt;span class="punctuation"&gt;(&lt;/span&gt;&lt;span class="punctuation"&gt;)&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span class="identifier"&gt;womble&lt;/span&gt;&lt;span class="punctuation"&gt;.&lt;/span&gt;Throttling&lt;span class="punctuation"&gt;.&lt;/span&gt;MaxConnections &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="number"&gt;30&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/div&gt;
The throttling value for the MaxConnections property defaults to
MaxInt, so it is more likely you will see constraints from the binding
themselves than you will from the throttling, unless you setup the
throttling yourself of course.
&lt;p&gt;Throttling is done at the ServiceModel level of the system while
the bindings are actually down at the channel level, so they tend to
operate slightly differently than the ServiceHost throttling. The
MaxConnections on the service host is also across all the possible
endpoints associated with that service, not just the specific one the
binding is aimed at.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=403542" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/david_bennett/archive/tags/Indigo/default.aspx">Indigo</category></item></channel></rss>