<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:georss="http://www.georss.org/georss" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Scott Klueppel's Blog - WCF</title>
    <link>http://offroadcoder.com/</link>
    <description>making the hard line look easy</description>
    <language>en-us</language>
    <copyright>Scott Klueppel</copyright>
    <lastBuildDate>Wed, 16 Jun 2010 01:40:52 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>me@offroadcoder.com</managingEditor>
    <webMaster>me@offroadcoder.com</webMaster>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=7e8161ef-7174-4361-9ce0-a85ce3741ae7</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,7e8161ef-7174-4361-9ce0-a85ce3741ae7.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,7e8161ef-7174-4361-9ce0-a85ce3741ae7.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7e8161ef-7174-4361-9ce0-a85ce3741ae7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For the few MSMQ or NetMsmqBinding WCF users I’ve encountered, here is an error you
may encounter in a highly secured environment. 
</p>
        <blockquote>
          <p>
            <font face="Consolas" size="2">0xC00E008F Binding to the forest root failed. This
error usually indicates a problem in the DNS configuration. MQ_ERROR_DS_BIND_ROOT_FOREST</font>
          </p>
        </blockquote>
        <p>
This is most likely another firewall problem. If port 3268 is not open, MSMQ cannot
register or authenticate with the user’s certificate in AD. Here is the port description:
</p>
        <p>
          <strong>3268/TCP,UDP msft-gc,</strong> Microsoft Global Catalog (LDAP service which
contains data from Active Directory forests) 
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=7e8161ef-7174-4361-9ce0-a85ce3741ae7" />
      </body>
      <title>Binding to the forest root failed.</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,7e8161ef-7174-4361-9ce0-a85ce3741ae7.aspx</guid>
      <link>http://offroadcoder.com/2010/06/16/BindingToTheForestRootFailed.aspx</link>
      <pubDate>Wed, 16 Jun 2010 01:40:52 GMT</pubDate>
      <description>&lt;p&gt;
For the few MSMQ or NetMsmqBinding WCF users I’ve encountered, here is an error you
may encounter in a highly secured environment. 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Consolas" size="2"&gt;0xC00E008F Binding to the forest root failed. This
error usually indicates a problem in the DNS configuration. MQ_ERROR_DS_BIND_ROOT_FOREST&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This is most likely another firewall problem. If port 3268 is not open, MSMQ cannot
register or authenticate with the user’s certificate in AD. Here is the port description:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;3268/TCP,UDP msft-gc,&lt;/strong&gt; Microsoft Global Catalog (LDAP service which
contains data from Active Directory forests) 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=7e8161ef-7174-4361-9ce0-a85ce3741ae7" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,7e8161ef-7174-4361-9ce0-a85ce3741ae7.aspx</comments>
      <category>Infrastructure</category>
      <category>Queuing</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=88ec2d3e-12d8-4fa0-b1d4-e82f7d6c677e</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,88ec2d3e-12d8-4fa0-b1d4-e82f7d6c677e.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,88ec2d3e-12d8-4fa0-b1d4-e82f7d6c677e.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=88ec2d3e-12d8-4fa0-b1d4-e82f7d6c677e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Despite its pitiful adoption in the developer community, I am implementing Transactional
NTFS (TxF) transactions using the Microsoft.KtmIntegration.TransactedFile class. This
allows me to reap the benefits of TransactionScope and distributed transactions for
file operations (e.g. creates, updates, deletes). This is the only missing piece for
typical transactional business applications. With the “KTM” and “KtmRm for Distributed
Transactions” services, available only on Vista, Windows 7, and Windows Server 2008,
file operations will roll back if the TransactionScope is not completed. 
</p>
        <p>
There’s just one problem… Transactional NTFS does not work with file shares. I can’t
remember the last time I put a “C:\FileStore” reference in a config file. A friendly
share like “\\server\FileStore” is always preferred, especially since DFS came about.
Attempting to use a share results in the following error message: 
</p>
        <blockquote>
          <p>
            <font color="#000080" size="2" face="Consolas">The remote server or share does not
support transacted file operations</font>
          </p>
        </blockquote>
        <p>
Don’t read this as “your remote server” or “your remote share”, but rather “all remote
servers and shares”. As mentioned in <a href="      http://msdn.microsoft.com/en-us/library/aa365738(v=VS.85).aspx" target="_blank">this
MSDN article</a>, TxF is not supported by the CIFS/SMB protocols. The error was probably
written with the expectation that one day some remote servers and shares would support
TxF. I emailed Microsoft about it and received a response fairly quickly. The response
was simply: 
</p>
        <blockquote>
          <p>
“We understand the need and have plans to eventually support TxF over SMB2, but we’re
not there yet and are not ready to announce if or when this will be supported. When
it is the documentation will be updated.”
</p>
        </blockquote>
        <p>
I’m not getting my hopes up, but Windows Server 2011 looks to be our only hope before
.NET changes beyond recognition and TxF is a distant memory. Until then, I wrapped
up all of my TxF code in a WCF service and install that service on the server with
the <em>FileStore</em> folder. 
</p>
        <p>
MSDN article – When to Use Transactional NTFS 
</p>
        <p>
      <a href="http://msdn.microsoft.com/en-us/library/aa365738(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library/aa365738(v=VS.85).aspx</a></p>
        <p>
TxF Sandbox – Sample Projects (including Microsoft.KtmIntegration.TransactedFile) 
</p>
        <p>
      <a href="http://offroadcoder.com/content/binary/TxFSandbox.zip">TxFSandbox.zip</a></p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=88ec2d3e-12d8-4fa0-b1d4-e82f7d6c677e" />
      </body>
      <title>The remote server or share does not support transacted file operations</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,88ec2d3e-12d8-4fa0-b1d4-e82f7d6c677e.aspx</guid>
      <link>http://offroadcoder.com/2010/05/08/TheRemoteServerOrShareDoesNotSupportTransactedFileOperations.aspx</link>
      <pubDate>Sat, 08 May 2010 15:32:25 GMT</pubDate>
      <description>&lt;p&gt;
Despite its pitiful adoption in the developer community, I am implementing Transactional
NTFS (TxF) transactions using the Microsoft.KtmIntegration.TransactedFile class. This
allows me to reap the benefits of TransactionScope and distributed transactions for
file operations (e.g. creates, updates, deletes). This is the only missing piece for
typical transactional business applications. With the “KTM” and “KtmRm for Distributed
Transactions” services, available only on Vista, Windows 7, and Windows Server 2008,
file operations will roll back if the TransactionScope is not completed. 
&lt;p&gt;
There’s just one problem… Transactional NTFS does not work with file shares. I can’t
remember the last time I put a “C:\FileStore” reference in a config file. A friendly
share like “\\server\FileStore” is always preferred, especially since DFS came about.
Attempting to use a share results in the following error message: &lt;blockquote&gt; 
&lt;p&gt;
&lt;font color="#000080" size="2" face="Consolas"&gt;The remote server or share does not
support transacted file operations&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Don’t read this as “your remote server” or “your remote share”, but rather “all remote
servers and shares”. As mentioned in &lt;a href="      http://msdn.microsoft.com/en-us/library/aa365738(v=VS.85).aspx" target="_blank"&gt;this
MSDN article&lt;/a&gt;, TxF is not supported by the CIFS/SMB protocols. The error was probably
written with the expectation that one day some remote servers and shares would support
TxF. I emailed Microsoft about it and received a response fairly quickly. The response
was simply: &lt;blockquote&gt; 
&lt;p&gt;
“We understand the need and have plans to eventually support TxF over SMB2, but we’re
not there yet and are not ready to announce if or when this will be supported. When
it is the documentation will be updated.”
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I’m not getting my hopes up, but Windows Server 2011 looks to be our only hope before
.NET changes beyond recognition and TxF is a distant memory. Until then, I wrapped
up all of my TxF code in a WCF service and install that service on the server with
the &lt;em&gt;FileStore&lt;/em&gt; folder. 
&lt;p&gt;
MSDN article – When to Use Transactional NTFS 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://msdn.microsoft.com/en-us/library/aa365738(v=VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa365738(v=VS.85).aspx&lt;/a&gt; 
&lt;p&gt;
TxF Sandbox – Sample Projects (including Microsoft.KtmIntegration.TransactedFile) 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://offroadcoder.com/content/binary/TxFSandbox.zip"&gt;TxFSandbox.zip&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=88ec2d3e-12d8-4fa0-b1d4-e82f7d6c677e" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,88ec2d3e-12d8-4fa0-b1d4-e82f7d6c677e.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>MSDTC</category>
      <category>Transactions</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=d2a49ef9-af36-4689-965a-2989e57a7a17</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,d2a49ef9-af36-4689-965a-2989e57a7a17.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,d2a49ef9-af36-4689-965a-2989e57a7a17.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d2a49ef9-af36-4689-965a-2989e57a7a17</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The sole 2010 offering in the USA of <a href="http://idesign.net/" target="_blank">IDesign</a>’s
Architect’s Master Class conducted by the man himself, Juval Lowy, is only a few weeks
away. I checked in at the <a href="http://idesign.net/" target="_blank">IDesign web
site</a>, and found some updates the world needs to see.
</p>
        <ul>
          <li>
            <a href="http://idesign.net/idesign/download/IDesign%20CSharp%20Coding%20Standard.zip" target="_blank">The
IDesign C# Coding Standard</a> – updated for .NET 4.0</li>
          <li>
            <a href="http://idesign.net/idesign/download/IDesign%20WCF%20Coding%20Standard.zip" target="_blank">The
IDesign WCF Coding Standard</a> – updated for .NET 4.0</li>
          <li>
            <a href="http://idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;tabid=11" target="_blank">The
IDesign Code Library</a> - updated for .NET 4.0, including Azure AppFabric Service
Bus extensions and the Service Bus Explorer (priceless)</li>
        </ul>
        <p>
If you want to learn something new every day, start at the top of the IDesign Code
Library and step through one example each day. Be careful, you might need to re-write
every line of code you’ve ever written.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=d2a49ef9-af36-4689-965a-2989e57a7a17" />
      </body>
      <title>Gearing up for Juval Lowy’s Architect’s Master Class</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,d2a49ef9-af36-4689-965a-2989e57a7a17.aspx</guid>
      <link>http://offroadcoder.com/2010/04/22/GearingUpForJuvalLowysArchitectsMasterClass.aspx</link>
      <pubDate>Thu, 22 Apr 2010 00:56:04 GMT</pubDate>
      <description>&lt;p&gt;
The sole 2010 offering in the USA of &lt;a href="http://idesign.net/" target="_blank"&gt;IDesign&lt;/a&gt;’s
Architect’s Master Class conducted by the man himself, Juval Lowy, is only a few weeks
away. I checked in at the &lt;a href="http://idesign.net/" target="_blank"&gt;IDesign web
site&lt;/a&gt;, and found some updates the world needs to see.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://idesign.net/idesign/download/IDesign%20CSharp%20Coding%20Standard.zip" target="_blank"&gt;The
IDesign C# Coding Standard&lt;/a&gt; – updated for .NET 4.0&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://idesign.net/idesign/download/IDesign%20WCF%20Coding%20Standard.zip" target="_blank"&gt;The
IDesign WCF Coding Standard&lt;/a&gt; – updated for .NET 4.0&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;amp;tabid=11" target="_blank"&gt;The
IDesign Code Library&lt;/a&gt; - updated for .NET 4.0, including Azure AppFabric Service
Bus extensions and the Service Bus Explorer (priceless)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If you want to learn something new every day, start at the top of the IDesign Code
Library and step through one example each day. Be careful, you might need to re-write
every line of code you’ve ever written.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=d2a49ef9-af36-4689-965a-2989e57a7a17" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,d2a49ef9-af36-4689-965a-2989e57a7a17.aspx</comments>
      <category>.NET Framework</category>
      <category>Azure</category>
      <category>C#</category>
      <category>Cloud</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=2d946739-b527-41a7-8422-d29f4149e47a</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,2d946739-b527-41a7-8422-d29f4149e47a.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,2d946739-b527-41a7-8422-d29f4149e47a.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2d946739-b527-41a7-8422-d29f4149e47a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In a <a href="http://offroadcoder.com/2009/01/29/TheFlowedTransactionCouldNotBeUnmarshaled.aspx" target="_blank">previous
post</a>, I discussed solutions to the dreaded “<em>The flowed transaction could not
be unmarshaled” </em>error commonly experienced when using MSDTC transactions with
WCF, SQL, TxF, etc. I have once again experienced the un-trusted domain scenario,
and can now report with certainty that adding hosts file entries on both machines
will correct the problem. Testing this solution with DTCPing.exe between the two machines
proves that making only the hosts file change acquaints the client and server and
allows distributed transactions to occur.
</p>
        <p>
You will find many blog and forum post non-solutions. Adding the hosts file entry
or the equivalent domain redirects are the only solutions when working with two machines
in disparate, un-trusted domains. Some of the non-solutions you’ll find go so far
as to say to change your SQL connection string to prevent current (ambient) transaction
enlistment. Not quite a complete solution as your first rollback unit test will fail.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=2d946739-b527-41a7-8422-d29f4149e47a" />
      </body>
      <title>The flowed transaction could not be unmarshaled - Untrusted Domains update</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,2d946739-b527-41a7-8422-d29f4149e47a.aspx</guid>
      <link>http://offroadcoder.com/2010/03/16/TheFlowedTransactionCouldNotBeUnmarshaledUntrustedDomainsUpdate.aspx</link>
      <pubDate>Tue, 16 Mar 2010 02:54:48 GMT</pubDate>
      <description>&lt;p&gt;
In a &lt;a href="http://offroadcoder.com/2009/01/29/TheFlowedTransactionCouldNotBeUnmarshaled.aspx" target="_blank"&gt;previous
post&lt;/a&gt;, I discussed solutions to the dreaded “&lt;em&gt;The flowed transaction could not
be unmarshaled” &lt;/em&gt;error commonly experienced when using MSDTC transactions with
WCF, SQL, TxF, etc. I have once again experienced the un-trusted domain scenario,
and can now report with certainty that adding hosts file entries on both machines
will correct the problem. Testing this solution with DTCPing.exe between the two machines
proves that making only the hosts file change acquaints the client and server and
allows distributed transactions to occur.
&lt;/p&gt;
&lt;p&gt;
You will find many blog and forum post non-solutions. Adding the hosts file entry
or the equivalent domain redirects are the only solutions when working with two machines
in disparate, un-trusted domains. Some of the non-solutions you’ll find go so far
as to say to change your SQL connection string to prevent current (ambient) transaction
enlistment. Not quite a complete solution as your first rollback unit test will fail.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=2d946739-b527-41a7-8422-d29f4149e47a" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,2d946739-b527-41a7-8422-d29f4149e47a.aspx</comments>
      <category>SQL</category>
      <category>Transactions</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=7d9ad86d-fd3e-4b20-ab02-89679f85d097</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,7d9ad86d-fd3e-4b20-ab02-89679f85d097.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,7d9ad86d-fd3e-4b20-ab02-89679f85d097.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7d9ad86d-fd3e-4b20-ab02-89679f85d097</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you have a WCF service exposing endpoints with the NetMsmqBinding, you may come
across my old pal, error code 0xc00e002f when you have web application clients. If
you’ve already had your required interactive login on the web server with your AppPool’s
service account and have already registered your AppPool service account’s user certificate
for message queuing, then you should be ok.
</p>
        <p>
If you are using IIS 7 or 7.5, there is one more piece to the puzzle. Go into <em>Advanced
Settings</em> on your Application Pool, and find “Load User Profile” under the <em>Process
Model</em> section. “Load User Profile” on these latest versions of IIS needs to be <strong>true</strong> to
get your service account’s user certificate passed to MSMQ. I fought this for a while
before finally finding it. And now… :)
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=7d9ad86d-fd3e-4b20-ab02-89679f85d097" />
      </body>
      <title>Web application clients of NetMsmqBinding WCF services (Error 0xc00e002f)</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,7d9ad86d-fd3e-4b20-ab02-89679f85d097.aspx</guid>
      <link>http://offroadcoder.com/2010/02/26/WebApplicationClientsOfNetMsmqBindingWCFServicesError0xc00e002f.aspx</link>
      <pubDate>Fri, 26 Feb 2010 03:07:07 GMT</pubDate>
      <description>&lt;p&gt;
If you have a WCF service exposing endpoints with the NetMsmqBinding, you may come
across my old pal, error code 0xc00e002f when you have web application clients. If
you’ve already had your required interactive login on the web server with your AppPool’s
service account and have already registered your AppPool service account’s user certificate
for message queuing, then you should be ok.
&lt;/p&gt;
&lt;p&gt;
If you are using IIS 7 or 7.5, there is one more piece to the puzzle. Go into &lt;em&gt;Advanced
Settings&lt;/em&gt; on your Application Pool, and find “Load User Profile” under the &lt;em&gt;Process
Model&lt;/em&gt; section. “Load User Profile” on these latest versions of IIS needs to be &lt;strong&gt;true&lt;/strong&gt; to
get your service account’s user certificate passed to MSMQ. I fought this for a while
before finally finding it. And now… :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=7d9ad86d-fd3e-4b20-ab02-89679f85d097" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,7d9ad86d-fd3e-4b20-ab02-89679f85d097.aspx</comments>
      <category>IIS</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=3331f559-3440-430f-a4c0-f18f5e90346f</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,3331f559-3440-430f-a4c0-f18f5e90346f.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,3331f559-3440-430f-a4c0-f18f5e90346f.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3331f559-3440-430f-a4c0-f18f5e90346f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve been talking about Geneva for a long time. I got the basics down earlier in the
year. I tried to come up with my own set of sample apps, but failed to get anywhere.
With the official release, and renaming to <em>Windows Identity Foundation (WIF)</em>,
I have renewed inspiration.
</p>
        <p>
I read Michele Leroux Bustamante’s MSDN magazine article, <a href="http://msdn.microsoft.com/en-us/magazine/ee335707.aspx" target="_blank">Claim-Based
Authorization with WIF</a>, last night. After reading the article, I was confident
that I could get a claims-aware WCF service stood up with a custom STS in a matter
of hours. Today I downloaded and installed WIF. I also installed the WIF SDK and all
of the prerequisite hotfixes. I perused the readme files and looked through some of
the samples code. Everything is layed out sensibly, the samples are commented sufficiently,
and the samples include setup and cleanup batch scripts when necessary.
</p>
        <p>
The samples include:
</p>
        <blockquote>
          <p>
Quick Start
</p>
          <ol>
            <li>
Simple Claims Aware Web Application 
</li>
            <li>
Simple Claims Aware Web Service 
</li>
            <li>
Simple Web Application With Information Card SignIn 
</li>
            <li>
Simple Web Application With Managed STS 
</li>
            <li>
Claims Aware Web Application in a Web Farm 
</li>
            <li>
Using Claims In IsInRole 
</li>
          </ol>
          <p>
End-to-end Scenario
</p>
          <ol>
            <li>
Authentication Assurance 
</li>
            <li>
Federation For Web Services 
</li>
            <li>
Federation For Web Applications 
</li>
            <li>
Identity Delegation 
</li>
            <li>
Web Application With Multiple SignIn Methods 
</li>
            <li>
Federation Metadata</li>
          </ol>
          <p>
Extensibility
</p>
          <ol>
            <li>
Claims Aware AJAX Application 
</li>
            <li>
Convert Claims To NT Token 
</li>
            <li>
Customizing Request Security Token 
</li>
            <li>
Customizing Token 
</li>
            <li>
WSTrustChannel 
</li>
            <li>
Claims-based Authorization</li>
          </ol>
        </blockquote>
        <p>
All of the samples I’ve run through so far are great. The only thing that I’m not
in love with is all the XML required to wire this stuff up. Maybe some Juval-style
extensions would make it less painful.
</p>
        <p>
One more thing… it looks like all of the XP users will finally have to upgrade. WIF
only works with Vista, Win7, and Win2008. I heard that Win2003 compatibility will
arrive in December.
</p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx" target="_blank">Download
Windows Identity Foundation</a>
        </p>
        <p>
          <a href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;p=1&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=eb9c345f-e830-40b8-a5fe-ae7a864c4d76&amp;u=details.aspx%3ffamilyid%3dC148B2DF-C7AF-46BB-9162-2C9422208504%26displaylang%3den" target="_blank">Download
Windows Identity Foundation SDK</a>
        </p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=3331f559-3440-430f-a4c0-f18f5e90346f" />
      </body>
      <title>WIF FTW</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,3331f559-3440-430f-a4c0-f18f5e90346f.aspx</guid>
      <link>http://offroadcoder.com/2009/11/27/WIFFTW.aspx</link>
      <pubDate>Fri, 27 Nov 2009 04:44:24 GMT</pubDate>
      <description>&lt;p&gt;
I’ve been talking about Geneva for a long time. I got the basics down earlier in the
year. I tried to come up with my own set of sample apps, but failed to get anywhere.
With the official release, and renaming to &lt;em&gt;Windows Identity Foundation (WIF)&lt;/em&gt;,
I have renewed inspiration.
&lt;/p&gt;
&lt;p&gt;
I read Michele Leroux Bustamante’s MSDN magazine article, &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee335707.aspx" target="_blank"&gt;Claim-Based
Authorization with WIF&lt;/a&gt;, last night. After reading the article, I was confident
that I could get a claims-aware WCF service stood up with a custom STS in a matter
of hours. Today I downloaded and installed WIF. I also installed the WIF SDK and all
of the prerequisite hotfixes. I perused the readme files and looked through some of
the samples code. Everything is layed out sensibly, the samples are commented sufficiently,
and the samples include setup and cleanup batch scripts when necessary.
&lt;/p&gt;
&lt;p&gt;
The samples include:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Quick Start
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Simple Claims Aware Web Application 
&lt;li&gt;
Simple Claims Aware Web Service 
&lt;li&gt;
Simple Web Application With Information Card SignIn 
&lt;li&gt;
Simple Web Application With Managed STS 
&lt;li&gt;
Claims Aware Web Application in a Web Farm 
&lt;li&gt;
Using Claims In IsInRole 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
End-to-end Scenario
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Authentication Assurance 
&lt;li&gt;
Federation For Web Services 
&lt;li&gt;
Federation For Web Applications 
&lt;li&gt;
Identity Delegation 
&lt;li&gt;
Web Application With Multiple SignIn Methods 
&lt;li&gt;
Federation Metadata&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Extensibility
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Claims Aware AJAX Application 
&lt;li&gt;
Convert Claims To NT Token 
&lt;li&gt;
Customizing Request Security Token 
&lt;li&gt;
Customizing Token 
&lt;li&gt;
WSTrustChannel 
&lt;li&gt;
Claims-based Authorization&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
All of the samples I’ve run through so far are great. The only thing that I’m not
in love with is all the XML required to wire this stuff up. Maybe some Juval-style
extensions would make it less painful.
&lt;/p&gt;
&lt;p&gt;
One more thing… it looks like all of the XP users will finally have to upgrade. WIF
only works with Vista, Win7, and Win2008. I heard that Win2003 compatibility will
arrive in December.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx" target="_blank"&gt;Download
Windows Identity Foundation&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=eb9c345f-e830-40b8-a5fe-ae7a864c4d76&amp;amp;u=details.aspx%3ffamilyid%3dC148B2DF-C7AF-46BB-9162-2C9422208504%26displaylang%3den" target="_blank"&gt;Download
Windows Identity Foundation SDK&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=3331f559-3440-430f-a4c0-f18f5e90346f" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,3331f559-3440-430f-a4c0-f18f5e90346f.aspx</comments>
      <category>.NET Framework</category>
      <category>AJAX</category>
      <category>ASP.NET</category>
      <category>C#</category>
      <category>WCF</category>
      <category>WIF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=ee03112d-9150-43fa-81a5-a9ad49b49640</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,ee03112d-9150-43fa-81a5-a9ad49b49640.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,ee03112d-9150-43fa-81a5-a9ad49b49640.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ee03112d-9150-43fa-81a5-a9ad49b49640</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Using the NetTcpBinding on a WCF service is secure by default. Unless you override
the default settings, you will enjoy Transport Security using Windows authentication
and the EncrpytAndSign protection level. When you create a new WCF service library,
Visual Studio creates a config file with the following <em>identity</em> block:
</p>
        <div style="font-size: 9pt; background: #3f3f3f; width: 400px; color: #dcdccc; font-family: consolas">
          <p style="margin: 0px">
            <span style="color: #85ac8d">   24</span> <span style="color: #efef8f">         
&lt;</span><span style="color: #e3c66a">identity</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   25</span> <span style="color: #efef8f">           
&lt;</span><span style="color: #e3c66a">dns</span><span style="color: #efef8f"></span><span style="color: white">value</span><span style="color: #efef8f">="</span><span style="color: #cc9393">localhost</span><span style="color: #efef8f">"/&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   26</span> <span style="color: #efef8f">         
&lt;/</span><span style="color: #e3c66a">identity</span><span style="color: #efef8f">&gt;</span></p>
        </div>
        <p>
 
</p>
        <p>
If you wipe this config file clean like me to write a much cleaner and shorter config
file, this <em>identity</em> block is the first thing to go. Sadly, most people also
add a binding configuration with &lt;security mode=”None”/&gt;. I have done this too
in an Intranet environment. The samples and book examples out there don’t show how
to write an actual production environment service that cares for different machines
in the same domain. While the default settings work when testing on your local machine,
they don’t work in a simple Intranet environment.
</p>
        <p>
Most of the difficulty I experienced when starting to work with WCF was getting security
to work with the TCP binding. Everything worked so easily during development, but
everything broke down once deployed to the development server. It didn’t help that
the only errors I saw were timeout exceptions. If I had known about the Service Trace
Viewer, I could have easily determine the cause and Googled (Bing wasn’t around then)
for a solution. Instead, I chose the easier (and much less secure) way out… rely on
my firewall and turn security off.
</p>
        <p>
As mentioned before, the NetTcpBinding is secure by default with transport security
using Windows authentication. The problem most experience when moving the service
to a different machine is caused by NT authentication failing. If you use svcutil
to generate your client config file and your host doesn’t have the <em>identity </em>block
mentioned above, svcutil will not add a key piece of information to the client config
file. The missing element is, you guessed it, the <em>identity</em> block. Without
it, you will likely get an exception and see a stack trace similar to this:
</p>
        <p>
[System.ServiceModel.Security.SecurityNegotiationException: A call to SSPI failed,
see inner exception.]<br />
...<br />
[System.Security.Authentication.AuthenticationException: A call to SSPI failed, see
inner exception.]<br />
...<br />
[System.ComponentModel.Win32Exception: The target principal name is incorrect.]<br />
...
</p>
        <p>
If you add tracing to your client, you will see that without specifying an <em>identity</em> block
WCF will make the call with a DNS identity set to the name of the host. Notice the
blue arrows.
</p>
        <p>
          <a href="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image.png">
            <img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="171" alt="image" src="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_thumb.png" width="330" border="0" />
          </a>
        </p>
        <p>
You can see that the EndpointReference does not have an &lt;Identity&gt; block. Without
that <em>identity</em> block, WCF cannot create a valid ServicePrincipalName. You
can find this in Reflector, following this path:
</p>
        <ul>
          <li>
System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider+WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade()
– This is where the SecurityNegociationException is being thrown. 
</li>
          <li>
System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider+WindowsStreamSecurityUpgradeInitiator.InitiateUpgradePrepare()
– This method populates an EndpointIdentity and ServicePrincipalName to be used immediately
after for NT authentication.</li>
        </ul>
        <p>
          <a href="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_3.png">
            <img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="144" alt="image" src="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_thumb_3.png" width="538" border="0" />
          </a>
        </p>
        <p>
When the identity is not specified, it falls back to trying to create an SPN from
the host address. I have seen this work on a machine that has two DNS names, using
the DNS name that does not match the NETBIOS or AD name for the machine. I’m not exactly
sure why that works.
</p>
        <p>
Having any of the following <em>identity</em> blocks in your client config file will
cause WCF to take the first path that successfully creates an SPN needed to perform
NT authentication in the AuthenticateAsClient method called from OnInitiateUpgrade():
</p>
        <ul>
          <li>
&lt;dns value=”serviceHostName”/&gt; 
</li>
          <li>
&lt;dns/&gt; 
</li>
          <li>
&lt;servicePrincipalName value=”domain\hostServiceUserAccount”/&gt; 
</li>
          <li>
&lt;servicePrincipalName/&gt;</li>
        </ul>
        <p>
        </p>
        <p>
        </p>
        <p>
Having these &lt;Identity&gt; settings in your client config file adds the appropriate
&lt;Identity&gt; settings in the &lt;EndpointReference&gt; used when opening the channel.
</p>
        <p>
          <a href="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_4.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="197" alt="image" src="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_thumb_4.png" width="333" border="0" />
          </a>
        </p>
        <p>
Security seems more mysterious when going rogue and writing your own config files.
If you go rogue, make sure you use the appropriate &lt;Identity&gt; blocks. With this
mystery solved, &lt;security mode=”None”/&gt; is a thing of the past. Now we can keep
our services secure in an Intranet environment.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=ee03112d-9150-43fa-81a5-a9ad49b49640" />
      </body>
      <title>NetTcpBinding and SecurityNegotiationException "A call to SSPI failed"</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,ee03112d-9150-43fa-81a5-a9ad49b49640.aspx</guid>
      <link>http://offroadcoder.com/2009/10/29/NetTcpBindingAndSecurityNegotiationExceptionACallToSSPIFailed.aspx</link>
      <pubDate>Thu, 29 Oct 2009 01:30:22 GMT</pubDate>
      <description>&lt;p&gt;
Using the NetTcpBinding on a WCF service is secure by default. Unless you override
the default settings, you will enjoy Transport Security using Windows authentication
and the EncrpytAndSign protection level. When you create a new WCF service library,
Visual Studio creates a config file with the following &lt;em&gt;identity&lt;/em&gt; block:
&lt;/p&gt;
&lt;div style="font-size: 9pt; background: #3f3f3f; width: 400px; color: #dcdccc; font-family: consolas"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 24&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="color: #e3c66a"&gt;identity&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&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&gt;&lt;span style="color: #e3c66a"&gt;dns&lt;/span&gt;&lt;span style="color: #efef8f"&gt; &lt;/span&gt;&lt;span style="color: white"&gt;value&lt;/span&gt;&lt;span style="color: #efef8f"&gt;="&lt;/span&gt;&lt;span style="color: #cc9393"&gt;localhost&lt;/span&gt;&lt;span style="color: #efef8f"&gt;"/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 26&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3c66a"&gt;identity&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
If you wipe this config file clean like me to write a much cleaner and shorter config
file, this &lt;em&gt;identity&lt;/em&gt; block is the first thing to go. Sadly, most people also
add a binding configuration with &amp;lt;security mode=”None”/&amp;gt;. I have done this too
in an Intranet environment. The samples and book examples out there don’t show how
to write an actual production environment service that cares for different machines
in the same domain. While the default settings work when testing on your local machine,
they don’t work in a simple Intranet environment.
&lt;/p&gt;
&lt;p&gt;
Most of the difficulty I experienced when starting to work with WCF was getting security
to work with the TCP binding. Everything worked so easily during development, but
everything broke down once deployed to the development server. It didn’t help that
the only errors I saw were timeout exceptions. If I had known about the Service Trace
Viewer, I could have easily determine the cause and Googled (Bing wasn’t around then)
for a solution. Instead, I chose the easier (and much less secure) way out… rely on
my firewall and turn security off.
&lt;/p&gt;
&lt;p&gt;
As mentioned before, the NetTcpBinding is secure by default with transport security
using Windows authentication. The problem most experience when moving the service
to a different machine is caused by NT authentication failing. If you use svcutil
to generate your client config file and your host doesn’t have the &lt;em&gt;identity &lt;/em&gt;block
mentioned above, svcutil will not add a key piece of information to the client config
file. The missing element is, you guessed it, the &lt;em&gt;identity&lt;/em&gt; block. Without
it, you will likely get an exception and see a stack trace similar to this:
&lt;/p&gt;
&lt;p&gt;
[System.ServiceModel.Security.SecurityNegotiationException: A call to SSPI failed,
see inner exception.]&lt;br&gt;
...&lt;br&gt;
[System.Security.Authentication.AuthenticationException: A call to SSPI failed, see
inner exception.]&lt;br&gt;
...&lt;br&gt;
[System.ComponentModel.Win32Exception: The target principal name is incorrect.]&lt;br&gt;
...
&lt;/p&gt;
&lt;p&gt;
If you add tracing to your client, you will see that without specifying an &lt;em&gt;identity&lt;/em&gt; block
WCF will make the call with a DNS identity set to the name of the host. Notice the
blue arrows.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="171" alt="image" src="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_thumb.png" width="330" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
You can see that the EndpointReference does not have an &amp;lt;Identity&amp;gt; block. Without
that &lt;em&gt;identity&lt;/em&gt; block, WCF cannot create a valid ServicePrincipalName. You
can find this in Reflector, following this path:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider+WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade()
– This is where the SecurityNegociationException is being thrown. 
&lt;li&gt;
System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider+WindowsStreamSecurityUpgradeInitiator.InitiateUpgradePrepare()
– This method populates an EndpointIdentity and ServicePrincipalName to be used immediately
after for NT authentication.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_3.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="144" alt="image" src="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_thumb_3.png" width="538" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
When the identity is not specified, it falls back to trying to create an SPN from
the host address. I have seen this work on a machine that has two DNS names, using
the DNS name that does not match the NETBIOS or AD name for the machine. I’m not exactly
sure why that works.
&lt;/p&gt;
&lt;p&gt;
Having any of the following &lt;em&gt;identity&lt;/em&gt; blocks in your client config file will
cause WCF to take the first path that successfully creates an SPN needed to perform
NT authentication in the AuthenticateAsClient method called from OnInitiateUpgrade():
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&amp;lt;dns value=”serviceHostName”/&amp;gt; 
&lt;li&gt;
&amp;lt;dns/&amp;gt; 
&lt;li&gt;
&amp;lt;servicePrincipalName value=”domain\hostServiceUserAccount”/&amp;gt; 
&lt;li&gt;
&amp;lt;servicePrincipalName/&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Having these &amp;lt;Identity&amp;gt; settings in your client config file adds the appropriate
&amp;lt;Identity&amp;gt; settings in the &amp;lt;EndpointReference&amp;gt; used when opening the channel.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="197" alt="image" src="http://offroadcoder.com/content/binary/NetTcpBindingwithDefaultSecuritySettings_91BB/image_thumb_4.png" width="333" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Security seems more mysterious when going rogue and writing your own config files.
If you go rogue, make sure you use the appropriate &amp;lt;Identity&amp;gt; blocks. With this
mystery solved, &amp;lt;security mode=”None”/&amp;gt; is a thing of the past. Now we can keep
our services secure in an Intranet environment.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=ee03112d-9150-43fa-81a5-a9ad49b49640" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,ee03112d-9150-43fa-81a5-a9ad49b49640.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>Dev Tools</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=6e3243b2-3b8a-44e0-b080-00cab2d08587</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,6e3243b2-3b8a-44e0-b080-00cab2d08587.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,6e3243b2-3b8a-44e0-b080-00cab2d08587.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6e3243b2-3b8a-44e0-b080-00cab2d08587</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://offroadcoder.com/content/binary/TheWCFMasterClass_1346E/iceberg2.jpg">
            <img title="Web services are just the tip of the iceberg in WCF" style="border-right: 0px; border-top: 0px; display: inline; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="247" alt="Web services are just the tip of the iceberg in WCF" src="http://offroadcoder.com/content/binary/TheWCFMasterClass_1346E/iceberg2_thumb.jpg" width="371" align="left" border="0" />
          </a>I
was privileged to attend the IDesign WCF Master Class last week. It only comes to
the USA one time each year, and is presented by the one and only Juval Lowy. The class
is held at the training center on the Microsoft Silicon Valley campus in Mountain
View, CA. Five very intense days of WCF covering all aspects of WCF from essentials
like the ABCs to the most intricate details about advanced topics like concurrency,
security, transactions, and the service bus.
</p>
        <p>
What we’ve been <strike>told</strike> sold about WCF from Microsoft is truly just
the tip of the iceberg. Juval presents countless examples that prove WCF is not just
about web services. WCF is the evolution of .NET, providing world-class features that
no class should ever be without. 
</p>
        <p>
Demos, samples, and labs are presented using .NET 3.5 and 4.0 with an emphasis on
the new features and functionality in 4.0. Discovery and announcements are the most
underrated and unknown new features of WCF 4.0. After seeing Juval’s demos on discovery
and announcement, I can’t imagine creating services without them.
</p>
        <p>
More than all of the WCF content, the class gives you a lot to think about regarding
architecture, the framework, and engineering principles. Juval’s mastery of .NET is
evident in his ServiceModelEx library that extends almost all aspects of WCF and the
service bus. His “one line of code” motto makes it possible for all of us to configure
our WCF services with ease. The ServiceModelEx library is a good example for all developers
to know and understand how to “do .NET” the right way. It exemplifies the best of
what .NET and WCF have to offer.
</p>
        <p>
Check out the <a href="http://www.idesign.net" target="_blank">IDesign website</a> to
get the WCF Resource CD (containing many of the examples and demos from the class).
Also note the next class dates and sign up for the IDesign newsletter.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=6e3243b2-3b8a-44e0-b080-00cab2d08587" />
      </body>
      <title>The WCF Master Class</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,6e3243b2-3b8a-44e0-b080-00cab2d08587.aspx</guid>
      <link>http://offroadcoder.com/2009/10/14/TheWCFMasterClass.aspx</link>
      <pubDate>Wed, 14 Oct 2009 01:59:33 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://offroadcoder.com/content/binary/TheWCFMasterClass_1346E/iceberg2.jpg"&gt;&lt;img title="Web services are just the tip of the iceberg in WCF" style="border-right: 0px; border-top: 0px; display: inline; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="247" alt="Web services are just the tip of the iceberg in WCF" src="http://offroadcoder.com/content/binary/TheWCFMasterClass_1346E/iceberg2_thumb.jpg" width="371" align="left" border="0"&gt;&lt;/a&gt;I
was privileged to attend the IDesign WCF Master Class last week. It only comes to
the USA one time each year, and is presented by the one and only Juval Lowy. The class
is held at the training center on the Microsoft Silicon Valley campus in Mountain
View, CA. Five very intense days of WCF covering all aspects of WCF from essentials
like the ABCs to the most intricate details about advanced topics like concurrency,
security, transactions, and the service bus.
&lt;/p&gt;
&lt;p&gt;
What we’ve been &lt;strike&gt;told&lt;/strike&gt; sold about WCF from Microsoft is truly just
the tip of the iceberg. Juval presents countless examples that prove WCF is not just
about web services. WCF is the evolution of .NET, providing world-class features that
no class should ever be without. 
&lt;/p&gt;
&lt;p&gt;
Demos, samples, and labs are presented using .NET 3.5 and 4.0 with an emphasis on
the new features and functionality in 4.0. Discovery and announcements are the most
underrated and unknown new features of WCF 4.0. After seeing Juval’s demos on discovery
and announcement, I can’t imagine creating services without them.
&lt;/p&gt;
&lt;p&gt;
More than all of the WCF content, the class gives you a lot to think about regarding
architecture, the framework, and engineering principles. Juval’s mastery of .NET is
evident in his ServiceModelEx library that extends almost all aspects of WCF and the
service bus. His “one line of code” motto makes it possible for all of us to configure
our WCF services with ease. The ServiceModelEx library is a good example for all developers
to know and understand how to “do .NET” the right way. It exemplifies the best of
what .NET and WCF have to offer.
&lt;/p&gt;
&lt;p&gt;
Check out the &lt;a href="http://www.idesign.net" target="_blank"&gt;IDesign website&lt;/a&gt; to
get the WCF Resource CD (containing many of the examples and demos from the class).
Also note the next class dates and sign up for the IDesign newsletter.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=6e3243b2-3b8a-44e0-b080-00cab2d08587" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,6e3243b2-3b8a-44e0-b080-00cab2d08587.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>Cloud</category>
      <category>Dev Tools</category>
      <category>Futures</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=6828fc29-242f-440e-b9b7-07396459410e</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,6828fc29-242f-440e-b9b7-07396459410e.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,6828fc29-242f-440e-b9b7-07396459410e.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6828fc29-242f-440e-b9b7-07396459410e</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Thank you, Mikael Sand (and Bing)!
</p>
        <p>
          <a href="http://blogical.se/blogs/mikael_sand/archive/2009/08/28/configuring-ws-atomic-transaction-support-in-windows-7-64-bit.aspx">http://blogical.se/blogs/mikael_sand/archive/2009/08/28/configuring-ws-atomic-transaction-support-in-windows-7-64-bit.aspx</a>
        </p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=6828fc29-242f-440e-b9b7-07396459410e" />
      </body>
      <title>Enable WS-AT on 64-bit Vista or Windows 7</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,6828fc29-242f-440e-b9b7-07396459410e.aspx</guid>
      <link>http://offroadcoder.com/2009/10/08/EnableWSATOn64bitVistaOrWindows7.aspx</link>
      <pubDate>Thu, 08 Oct 2009 05:51:21 GMT</pubDate>
      <description>&lt;p&gt;
Thank you, Mikael Sand (and Bing)!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogical.se/blogs/mikael_sand/archive/2009/08/28/configuring-ws-atomic-transaction-support-in-windows-7-64-bit.aspx"&gt;http://blogical.se/blogs/mikael_sand/archive/2009/08/28/configuring-ws-atomic-transaction-support-in-windows-7-64-bit.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=6828fc29-242f-440e-b9b7-07396459410e" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,6828fc29-242f-440e-b9b7-07396459410e.aspx</comments>
      <category>MSDTC</category>
      <category>Transactions</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=c6b29bd9-3388-43b7-b52b-4944aee7e848</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,c6b29bd9-3388-43b7-b52b-4944aee7e848.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,c6b29bd9-3388-43b7-b52b-4944aee7e848.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c6b29bd9-3388-43b7-b52b-4944aee7e848</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">The <a href="http://www.jaxcodecamp.com">2009
Jacksonville Code Camp</a> was a great success. Many thanks to Bayer, Brandy, and
everyone else that made it happen. The bar has been set really high for future Jacksonville
code camps, and for the rest of Florida too. 
<br /><br />
My session on Transactional WCF Services went well. Many great questions and compliments
after the session. If you attended and have any unanswered questions, please email
me. 
<br /><br />
You can download the session files below. It contains staged versions of all of the
transaction modes we discussed. It also contains a tracing solution and tracing result
files to view the client and host tracing files in Client/Service mode. Also see my
previous post on using the <a href="http://offroadcoder.com/2008/06/19/ServiceTraceViewer.aspx">Service
Trace Viewer</a>. It also contains a few demo projects that we didn't get to in the
one-hour session. 
<br /><br />
Files/Solutions included in Session Archive: 
<ul><li>
PowerPoint slides 
</li><li>
Transaction Promotion Code Snippet 
</li><li>
Testing database backup 
</li><li>
Testing SQL script (query and cleanup between tests) 
</li><li>
IDesign ServiceModelEx Project (used by all included Solutions) 
</li><li>
Code Demo Solutions</li></ul><p>
Code Demos include:
</p><table border="0" cellspacing="0" cellpadding="3"><tbody><tr><td valign="top" width="20">
1.</td><td valign="top">
TransactionScope - Shows how single/multiple resource managers affect which Transaction
Manager is chosen to handle the scoped transaction. Also gives first look at transaction
promotion detection. 
</td></tr><tr><td valign="top" width="20">
2a.</td><td valign="top">
Mode None - WCF transaction mode with which no transactions are created or flowed
from the calling client. 
</td></tr><tr><td valign="top" width="20">
2b.</td><td valign="top">
Mode Service - WCF transaction mode with which no transactions are flowed from the
calling client, but a transaction is created for your service operation. 
</td></tr><tr><td valign="top" width="20">
2c.</td><td valign="top">
Mode Client - WCF transaction mode with which a transaction is required to be flowed,
and the service will only use the client transaction.</td></tr><tr><td valign="top" width="20">
2d.</td><td valign="top">
Mode Client/Service - WCF transaction mode with which a client transaction will be
flowed and used by the service, if available. If no client transaction is flowed,
a transaction will be provided automatically for the service operation.</td></tr><tr><td valign="top" width="20">
3.</td><td valign="top">
Explicit Voting - Shows how explicit voting with a session-mode service is performed
using OperationContext.Current.SetTransactionComplete(). 
</td></tr><tr><td valign="top" width="20">
4a.</td><td valign="top">
Testing Various Resource Managers - Shows how a client can use a single TransactionScope
to call several services (some transactional, some non-transactional), a database
stored procedure, and an IDesign volatile resource manager Transactional&lt;int&gt;<int>
.
</int></td></tr><tr><td valign="top" width="20">
4b.</td><td valign="top">
Testing Services - Provides a host project for a transactional service and a non-transactional
service used in 4a. 
</td></tr><tr><td valign="top" width="20">
5a.</td><td valign="top">
Tracing - Same as 2d. modified with the additional app.config settings in the client
and host projects to allow for service tracing to .svclog files. 
</td></tr><tr><td valign="top" width="20">
5b.</td><td valign="top">
Tracing Results - Stored results from executing 5a. in case you don't want to load
the database and actually run the projects. The .stvproj file can be opened directly
in the Service Trace Viewer. On the "Activity" table, click on the activity "Process
action 'http://services/gotjeep.net/GpsTrackServiceContract/SubmitTrack'" then click
on the "Graph" tab. You will see that the client and host activities where the arrow
moves from client to host (send and receive message, respectively) show the OleTxTransaction
in "Headers." The next activity in the host reads "The transaction '5bd25b08-848c-409d-9163-6303b9138382:1'
was flowed to operation 'SubmitTrack'."</td></tr></tbody></table><p>
 
</p><p>
Download the session files: 
<br /><a href="content/binary/TransactionalWCF.zip">TransactionalWCF.zip (854 KB)</a></p><img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=c6b29bd9-3388-43b7-b52b-4944aee7e848" /></body>
      <title>Code Camp Session Files</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,c6b29bd9-3388-43b7-b52b-4944aee7e848.aspx</guid>
      <link>http://offroadcoder.com/2009/09/03/CodeCampSessionFiles.aspx</link>
      <pubDate>Thu, 03 Sep 2009 03:34:34 GMT</pubDate>
      <description>The &lt;a href="http://www.jaxcodecamp.com"&gt;2009 Jacksonville Code Camp&lt;/a&gt; was a great
success. Many thanks to Bayer, Brandy, and everyone else that made it happen. The
bar has been set really high for future Jacksonville code camps, and for the rest
of Florida too. 
&lt;br&gt;
&lt;br&gt;
My session on Transactional WCF Services went well. Many great questions and compliments
after the session. If you attended and have any unanswered questions, please email
me. 
&lt;br&gt;
&lt;br&gt;
You can download the session files below. It contains staged versions of all of the
transaction modes we discussed. It also contains a tracing solution and tracing result
files to view the client and host tracing files in Client/Service mode. Also see my
previous post on using the &lt;a href="http://offroadcoder.com/2008/06/19/ServiceTraceViewer.aspx"&gt;Service
Trace Viewer&lt;/a&gt;. It also contains a few demo projects that we didn't get to in the
one-hour session. 
&lt;br&gt;
&lt;br&gt;
Files/Solutions included in Session Archive: 
&lt;ul&gt;
&lt;li&gt;
PowerPoint slides 
&lt;li&gt;
Transaction Promotion Code Snippet 
&lt;li&gt;
Testing database backup 
&lt;li&gt;
Testing SQL script (query and cleanup between tests) 
&lt;li&gt;
IDesign ServiceModelEx Project (used by all included Solutions) 
&lt;li&gt;
Code Demo Solutions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Code Demos include:
&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="3"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
1.&lt;/td&gt;
&lt;td valign="top"&gt;
TransactionScope - Shows how single/multiple resource managers affect which Transaction
Manager is chosen to handle the scoped transaction. Also gives first look at transaction
promotion detection. 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
2a.&lt;/td&gt;
&lt;td valign="top"&gt;
Mode None - WCF transaction mode with which no transactions are created or flowed
from the calling client. 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
2b.&lt;/td&gt;
&lt;td valign="top"&gt;
Mode Service - WCF transaction mode with which no transactions are flowed from the
calling client, but a transaction is created for your service operation. 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
2c.&lt;/td&gt;
&lt;td valign="top"&gt;
Mode Client - WCF transaction mode with which a transaction is required to be flowed,
and the service will only use the client transaction.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
2d.&lt;/td&gt;
&lt;td valign="top"&gt;
Mode Client/Service - WCF transaction mode with which a client transaction will be
flowed and used by the service, if available. If no client transaction is flowed,
a transaction will be provided automatically for the service operation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
3.&lt;/td&gt;
&lt;td valign="top"&gt;
Explicit Voting - Shows how explicit voting with a session-mode service is performed
using OperationContext.Current.SetTransactionComplete(). 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
4a.&lt;/td&gt;
&lt;td valign="top"&gt;
Testing Various Resource Managers - Shows how a client can use a single TransactionScope
to call several services (some transactional, some non-transactional), a database
stored procedure, and an IDesign volatile resource manager Transactional&amp;lt;int&amp;gt;&lt;int&gt;
.
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
4b.&lt;/td&gt;
&lt;td valign="top"&gt;
Testing Services - Provides a host project for a transactional service and a non-transactional
service used in 4a. 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
5a.&lt;/td&gt;
&lt;td valign="top"&gt;
Tracing - Same as 2d. modified with the additional app.config settings in the client
and host projects to allow for service tracing to .svclog files. 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="20"&gt;
5b.&lt;/td&gt;
&lt;td valign="top"&gt;
Tracing Results - Stored results from executing 5a. in case you don't want to load
the database and actually run the projects. The .stvproj file can be opened directly
in the Service Trace Viewer. On the "Activity" table, click on the activity "Process
action 'http://services/gotjeep.net/GpsTrackServiceContract/SubmitTrack'" then click
on the "Graph" tab. You will see that the client and host activities where the arrow
moves from client to host (send and receive message, respectively) show the OleTxTransaction
in "Headers." The next activity in the host reads "The transaction '5bd25b08-848c-409d-9163-6303b9138382:1'
was flowed to operation 'SubmitTrack'."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Download the session files: 
&lt;br&gt;
&lt;a href="content/binary/TransactionalWCF.zip"&gt;TransactionalWCF.zip (854 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=c6b29bd9-3388-43b7-b52b-4944aee7e848" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,c6b29bd9-3388-43b7-b52b-4944aee7e848.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>Dev Community</category>
      <category>Dev Tools</category>
      <category>MSDTC</category>
      <category>Transactions</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=e5c6ec12-8927-48de-8831-7850f3db3e4d</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,e5c6ec12-8927-48de-8831-7850f3db3e4d.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,e5c6ec12-8927-48de-8831-7850f3db3e4d.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e5c6ec12-8927-48de-8831-7850f3db3e4d</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.jaxdug.com" target="_blank">JaxDug</a> is doing something different
this year having all sponsorship proceeds benefiting <a href="http://www.wolfsonchildrens.org/" target="_blank">Wolfson’s
Children Hospital</a>. In addition to the sponsorship surplus going to Wolfson’s,
there will also be a silent auction at the after-party at Sneaker’s Sports Grille.
</p>
        <p>
There is a great session lineup with eight tracks having five hour-long sessions in
each track. I’ll be presenting one session on Transactional WCF Services. It’s guaranteed
to be a good geeky time, and I hope it will have record attendance this year.
</p>
        <p>
 <a href="http://www.jaxcodecamp.com/" target="_blank">Register now!</a></p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=e5c6ec12-8927-48de-8831-7850f3db3e4d" />
      </body>
      <title>Jacksonville Code Camp 2009</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,e5c6ec12-8927-48de-8831-7850f3db3e4d.aspx</guid>
      <link>http://offroadcoder.com/2009/07/15/JacksonvilleCodeCamp2009.aspx</link>
      <pubDate>Wed, 15 Jul 2009 04:06:22 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.jaxdug.com" target="_blank"&gt;JaxDug&lt;/a&gt; is doing something different
this year having all sponsorship proceeds benefiting &lt;a href="http://www.wolfsonchildrens.org/" target="_blank"&gt;Wolfson’s
Children Hospital&lt;/a&gt;. In addition to the sponsorship surplus going to Wolfson’s,
there will also be a silent auction at the after-party at Sneaker’s Sports Grille.
&lt;/p&gt;
&lt;p&gt;
There is a great session lineup with eight tracks having five hour-long sessions in
each track. I’ll be presenting one session on Transactional WCF Services. It’s guaranteed
to be a good geeky time, and I hope it will have record attendance this year.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://www.jaxcodecamp.com/" target="_blank"&gt;Register now!&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=e5c6ec12-8927-48de-8831-7850f3db3e4d" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,e5c6ec12-8927-48de-8831-7850f3db3e4d.aspx</comments>
      <category>Dev Community</category>
      <category>General</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=9f705cfe-f476-48fb-9f4d-a938846d003d</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,9f705cfe-f476-48fb-9f4d-a938846d003d.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,9f705cfe-f476-48fb-9f4d-a938846d003d.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9f705cfe-f476-48fb-9f4d-a938846d003d</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Important, proven, and universally-useful technologies like WCF and Mobile are still
not well-known in the development community. Many believe there is another boom, similar
to the 1992 Internet boom, on the horizon that will require skilled and knowledgeable
developers to engineer the framework and associated connecting systems. Staying tech-current
and adapting to our new world is an absolute necessity. Don’t become the COBOL programmer
of the future. Knowing these great system-connecting technologies (WCF, Mobile, Cloud,
etc.) will quickly become a requirement to compete in the software industry.
</p>
        <p>
Check out the following interview with Richard Campbell (DotNetRocks, RunAs Radio)
and Juval Lowy (IDesign) talking about the EnergyNet at the DevConnections conference.
The growing hype about alternative energy and the EnergyNet is stunning. Technology
has progressed far enough where we can start to tie together disparate systems to
benefit producers and consumers alike. 
</p>
        <p>
          <a href="http://video.google.com/videoplay?docid=4831440850220717845" target="_blank">http://video.google.com/videoplay?docid=4831440850220717845</a>
        </p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=9f705cfe-f476-48fb-9f4d-a938846d003d" />
      </body>
      <title>Developers - Get ready for the future!</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,9f705cfe-f476-48fb-9f4d-a938846d003d.aspx</guid>
      <link>http://offroadcoder.com/2009/04/11/DevelopersGetReadyForTheFuture.aspx</link>
      <pubDate>Sat, 11 Apr 2009 12:51:30 GMT</pubDate>
      <description>&lt;p&gt;
Important, proven, and universally-useful technologies like WCF and Mobile are still
not well-known in the development community. Many believe there is another boom, similar
to the 1992 Internet boom, on the horizon that will require skilled and knowledgeable
developers to engineer the framework and associated connecting systems. Staying tech-current
and adapting to our new world is an absolute necessity. Don’t become the COBOL programmer
of the future. Knowing these great system-connecting technologies (WCF, Mobile, Cloud,
etc.) will quickly become a requirement to compete in the software industry.
&lt;/p&gt;
&lt;p&gt;
Check out the following interview with Richard Campbell (DotNetRocks, RunAs Radio)
and Juval Lowy (IDesign) talking about the EnergyNet at the DevConnections conference.
The growing hype about alternative energy and the EnergyNet is stunning. Technology
has progressed far enough where we can start to tie together disparate systems to
benefit producers and consumers alike. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://video.google.com/videoplay?docid=4831440850220717845" target="_blank"&gt;http://video.google.com/videoplay?docid=4831440850220717845&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=9f705cfe-f476-48fb-9f4d-a938846d003d" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,9f705cfe-f476-48fb-9f4d-a938846d003d.aspx</comments>
      <category>.NET Framework</category>
      <category>Futures</category>
      <category>Mobile</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=08cef9e9-c8f3-49a5-bd38-dcb303bb9c52</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,08cef9e9-c8f3-49a5-bd38-dcb303bb9c52.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,08cef9e9-c8f3-49a5-bd38-dcb303bb9c52.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=08cef9e9-c8f3-49a5-bd38-dcb303bb9c52</wfw:commentRss>
      <slash:comments>7</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div style="width: 550px">
          <p>
“Do not anticipate trouble, or worry about what may never happen. Keep in the sunlight.” 
</p>
          <p>
  
</p>
          <p align="right">
- Benjamin Franklin
</p>
        </div>
        <p>
  
</p>
        <p>
It’s obvious that Mr. Franklin didn’t have to deal with bad data, bad code, or even
the occasional hiccup. In the real world, there is “trouble” and we need to not only
anticipate that trouble, but also worry about what may never happen. Simply “keeping
in the sunlight” won’t maintain data or application state integrity. In the real world
we need transactions! 
</p>
        <p>
  
</p>
        <p>
Since .NET 2.0, we’ve had the privilege of using <em>System.Transactions.TransactionScope</em> to
manage our transactions with very few headaches. One of the headaches that almost
everyone experiences is MSDTC. One of the oldest and most elusive topics on the web.
There are tons of blog and forum posts directing our fellow developers to check their
firewall settings for every MSDTC problem. The latest MSDTC hiccup I have seen comes
in the beautifully packaged error message: 
</p>
        <blockquote>
          <p>
            <strong>The flowed transaction could not be unmarshaled. The following exception occurred:
Communication with the underlying transaction manager has failed.</strong>
          </p>
        </blockquote>
        <p>
The what could not be what? You can read some <a href="http://msdn.microsoft.com/en-us/library/cc229833(PROT.10).aspx " target="_blank">MSDN
documentation on the topic</a> which will probably cause you more pain. If you are
seeing this error message, there’s only a few things that may be wrong. 
</p>
        <ol>
          <li>
MSDTC Settings 
<ul><li>
Check the MSDTC settings on the machine that is initiating the transaction. If “Allow
Outbound” is not checked, then it won’t allow the transaction in progress to be flowed
to the next machine in the transaction chain. Check the box and restart MSDTC… it
should work.</li></ul></li>
          <li>
Un-Trusted Domains 
<ul><li>
I have seen this error when you are trying to flow transactions between machines that
are in un-trusted domains. Machines in different domains that do not trust each other
block the antiquated, yet necessary, WINS resolution between the two machines. MSDTC
relies on WINS resolution. I have fixed this problem before by adding host file entries
on both machines pointing to the other machine. I can’t guarantee that this will work
in all cases. Both of those machines are no longer under my control.</li></ul></li>
          <li>
Imaged Servers 
<ul><li>
The most recent, and most blogged about problem is surprisingly caused by two machines
created from the same image. Cloning or imaging servers is quite common. Building
a server from scratch is not a fun activity, so we build one, create an image, and
put that image on every server we want to build after that. Once again, MSDTC is standing
in our way because of the way it detects the sending and receiving application’s unique
identifier. Each machine has a GUID in the registry that identifies it uniquely as
a participant in an MSDTC transaction. Imaged machines have the same GUID. I’ll talk
about the detection and resolution of this for the remainder of this post.</li></ul></li>
        </ol>
        <p>
Running DtcPing.exe between the two machines will actually tell you that the machines
are using the same GUID. Output window text from DtcPing shown below.
</p>
        <blockquote>
          <p>
            <font face="Consolas" size="2">DTCping log file: C:\DTC Ping\THRESHER4160.log<br />
Firewall Port Settings:<br />
Port:5150-5250<br />
RPC server is ready<br />
Please Start Partner DTCping before pinging<br /><font color="#ff0000"><strong>WARNING:the CID values for both test machines are the
same</strong><br /></font>Please send following LOG to Microsoft for analysis:<br />
Partner LOG: SCORPION6128.log<br />
My LOG: THRESHER4160.log</font>
          </p>
        </blockquote>
        <p>
Tucked away in the last step of a Microsoft Knowledge Base article titled <a href="http://support.microsoft.com/kb/306843" target="_blank">"How
to troubleshoot MS DTC firewall issues"</a> is a reference to this problem. Use regedit.exe
to look at the registry on both machines. Locate the HKEY_CLASSES_ROOT\CID key in
the registry. 
</p>
        <p>
          <a href="http://scott.klueppel.net/content/binary/Theflowedtransactioncouldnotbeunmarshal_124C3/CID.png">
            <img title="Find your MSDTC CID in the registry" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="371" alt="Find your MSDTC CID in the registry" src="http://scott.klueppel.net/content/binary/Theflowedtransactioncouldnotbeunmarshal_124C3/CID_thumb.png" width="771" border="0" />
          </a>
        </p>
        <p>
Find the CID key that has a description value of “MSDTC”. If they are the same, the
transaction cannot flow. 
</p>
        <p>
          <strong>WARNING:</strong> Back up your registry before making any changes!
</p>
        <p>
          <strong>Solution 1 - Replace the offending CID keys/values on one of the machines: </strong>In
this case, you will need to find all keys/values with GUID 28b81f1c-2afb-4ee2-ad85-5bc62dad1647
in your registry and replace it with a new GUID (using GuidGen). There is likely to
be 3 places this GUID appears. It is also important to note that the offending GUID
appears in the DtcPing log file generated during the ping test.
</p>
        <p>
          <strong>Solution 2 – Use msdtc command line tool to re-install MSDTC: </strong>The
commands are simply:
</p>
        <blockquote>
          <p>
            <font face="consol" size="2">msdtc -uninstall<br />
msdtc -install</font>
          </p>
        </blockquote>
        <p>
After making the registry changes or running the msdtc command line tool, you must
restart your server for the changes to take effect.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=08cef9e9-c8f3-49a5-bd38-dcb303bb9c52" />
      </body>
      <title>The flowed transaction could not be unmarshaled.</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,08cef9e9-c8f3-49a5-bd38-dcb303bb9c52.aspx</guid>
      <link>http://offroadcoder.com/2009/01/29/TheFlowedTransactionCouldNotBeUnmarshaled.aspx</link>
      <pubDate>Thu, 29 Jan 2009 02:39:52 GMT</pubDate>
      <description>&lt;div style="width: 550px"&gt;
&lt;p&gt;
“Do not anticipate trouble, or worry about what may never happen. Keep in the sunlight.” 
&lt;p&gt;
&amp;nbsp; 
&lt;p align="right"&gt;
- Benjamin Franklin
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
It’s obvious that Mr. Franklin didn’t have to deal with bad data, bad code, or even
the occasional hiccup. In the real world, there is “trouble” and we need to not only
anticipate that trouble, but also worry about what may never happen. Simply “keeping
in the sunlight” won’t maintain data or application state integrity. In the real world
we need transactions! 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Since .NET 2.0, we’ve had the privilege of using &lt;em&gt;System.Transactions.TransactionScope&lt;/em&gt; to
manage our transactions with very few headaches. One of the headaches that almost
everyone experiences is MSDTC. One of the oldest and most elusive topics on the web.
There are tons of blog and forum posts directing our fellow developers to check their
firewall settings for every MSDTC problem. The latest MSDTC hiccup I have seen comes
in the beautifully packaged error message: &lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;The flowed transaction could not be unmarshaled. The following exception occurred:
Communication with the underlying transaction manager has failed.&lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The what could not be what? You can read some &lt;a href="http://msdn.microsoft.com/en-us/library/cc229833(PROT.10).aspx " target="_blank"&gt;MSDN
documentation on the topic&lt;/a&gt; which will probably cause you more pain. If you are
seeing this error message, there’s only a few things that may be wrong. 
&lt;ol&gt;
&lt;li&gt;
MSDTC Settings 
&lt;ul&gt;
&lt;li&gt;
Check the MSDTC settings on the machine that is initiating the transaction. If “Allow
Outbound” is not checked, then it won’t allow the transaction in progress to be flowed
to the next machine in the transaction chain. Check the box and restart MSDTC… it
should work.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Un-Trusted Domains 
&lt;ul&gt;
&lt;li&gt;
I have seen this error when you are trying to flow transactions between machines that
are in un-trusted domains. Machines in different domains that do not trust each other
block the antiquated, yet necessary, WINS resolution between the two machines. MSDTC
relies on WINS resolution. I have fixed this problem before by adding host file entries
on both machines pointing to the other machine. I can’t guarantee that this will work
in all cases. Both of those machines are no longer under my control.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Imaged Servers 
&lt;ul&gt;
&lt;li&gt;
The most recent, and most blogged about problem is surprisingly caused by two machines
created from the same image. Cloning or imaging servers is quite common. Building
a server from scratch is not a fun activity, so we build one, create an image, and
put that image on every server we want to build after that. Once again, MSDTC is standing
in our way because of the way it detects the sending and receiving application’s unique
identifier. Each machine has a GUID in the registry that identifies it uniquely as
a participant in an MSDTC transaction. Imaged machines have the same GUID. I’ll talk
about the detection and resolution of this for the remainder of this post.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Running DtcPing.exe between the two machines will actually tell you that the machines
are using the same GUID. Output window text from DtcPing shown below.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Consolas" size="2"&gt;DTCping log file: C:\DTC Ping\THRESHER4160.log&lt;br&gt;
Firewall Port Settings:&lt;br&gt;
Port:5150-5250&lt;br&gt;
RPC server is ready&lt;br&gt;
Please Start Partner DTCping before pinging&lt;br&gt;
&lt;font color="#ff0000"&gt;&lt;strong&gt;WARNING:the CID values for both test machines are the
same&lt;/strong&gt;
&lt;br&gt;
&lt;/font&gt;Please send following LOG to Microsoft for analysis:&lt;br&gt;
Partner LOG: SCORPION6128.log&lt;br&gt;
My LOG: THRESHER4160.log&lt;/font&gt; 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Tucked away in the last step of a Microsoft Knowledge Base article titled &lt;a href="http://support.microsoft.com/kb/306843" target="_blank"&gt;"How
to troubleshoot MS DTC firewall issues"&lt;/a&gt; is a reference to this problem. Use regedit.exe
to look at the registry on both machines. Locate the HKEY_CLASSES_ROOT\CID key in
the registry. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://scott.klueppel.net/content/binary/Theflowedtransactioncouldnotbeunmarshal_124C3/CID.png"&gt;&lt;img title="Find your MSDTC CID in the registry" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="371" alt="Find your MSDTC CID in the registry" src="http://scott.klueppel.net/content/binary/Theflowedtransactioncouldnotbeunmarshal_124C3/CID_thumb.png" width="771" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Find the CID key that has a description value of “MSDTC”. If they are the same, the
transaction cannot flow. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;WARNING:&lt;/strong&gt; Back up your registry before making any changes!
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Solution 1 - Replace the offending CID keys/values on one of the machines: &lt;/strong&gt;In
this case, you will need to find all keys/values with GUID 28b81f1c-2afb-4ee2-ad85-5bc62dad1647
in your registry and replace it with a new GUID (using GuidGen). There is likely to
be 3 places this GUID appears. It is also important to note that the offending GUID
appears in the DtcPing log file generated during the ping test.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Solution 2 – Use msdtc command line tool to re-install MSDTC: &lt;/strong&gt;The
commands are simply:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="consol" size="2"&gt;msdtc -uninstall&lt;br&gt;
msdtc -install&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
After making the registry changes or running the msdtc command line tool, you must
restart your server for the changes to take effect.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=08cef9e9-c8f3-49a5-bd38-dcb303bb9c52" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,08cef9e9-c8f3-49a5-bd38-dcb303bb9c52.aspx</comments>
      <category>.NET Framework</category>
      <category>MSDTC</category>
      <category>Quotes</category>
      <category>Transactions</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=bc3f77a3-9d3a-44cf-ba92-d71125cdc5bd</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,bc3f77a3-9d3a-44cf-ba92-d71125cdc5bd.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,bc3f77a3-9d3a-44cf-ba92-d71125cdc5bd.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bc3f77a3-9d3a-44cf-ba92-d71125cdc5bd</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Don't be so quick to blame the service or MSDTC when you see the error "Communication
with the underlying transaction manager has failed."
</p>
        <p>
          <strong>Symptom:</strong>
        </p>
        <p>
An error message that reads something like: 
</p>
        <blockquote>
          <p>
System.Transactions.TransactionManagerCommunicationException: Communication with the
underlying transaction manager has failed. ---&gt; System.Runtime.InteropServices.COMException
(0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
</p>
        </blockquote>
        <p>
          <strong>Solutions:</strong>
        </p>
        <p>
  
</p>
        <p>
"Check your firewall settings" is what you will find in almost all forum posts and
on MSDN. You need port 135 open bi-directionally for RPC's end point mapper (EPM).
You also need ports 1024-5000 open bi-directionally if you have not specified your
own port settings for RPC in the registry. If you have your own ports specified in
the registry, then those need to be open bi-directionally. 
</p>
        <p>
  
</p>
        <p>
          <strong>
            <em>WHAT ?!? </em>
          </strong>It may also be your code causing the issue. If
you are using TransactionScope, you have to be mindful of every method called within
the using braces. Looking at the code below, you will see two service calls and a
seemingly innocuous <em>ShouldContinue()</em> method checking to see if the second
operation should be called. 
</p>
        <blockquote>
          <p>
            <font color="#0000ff">using</font> (TransactionScope scope = new TransactionScope()) 
</p>
          <p>
            <font color="#0000ff">using</font> (MyServiceClient proxy = new MyServiceClient()) 
</p>
          <p>
{ 
</p>
          <p>
       proxy.DoOperationOne(someID); 
</p>
          <p>
       
</p>
          <p>
       <font color="#0000ff">if</font> (ShouldContinue()) <font color="#008000">//
uh, oh! What if this has an ADO.NET connection that is opened and closed inside it?</font></p>
          <p>
       { 
</p>
          <p>
              
proxy.DoOperationTwo(someOtherID); 
</p>
          <p>
       } 
</p>
          <p>
}
</p>
        </blockquote>
        <p>
If <em>ShouldContinue()</em> opens and closes an SqlConnection, the TransactionScope
object has no means by which to commit or rollback this part of the transaction. This
will cause the error "Communication with the underlying transaction manager has failed." 
</p>
        <p>
  
</p>
        <p>
1. If you do not need to results of <em>DoOperationOne()</em> to feed <em>ShouldContinue()</em>,
then do that logic before the TransactionScope using block. 
</p>
        <p>
2. If you do need the result of <em>DoOperationOne()</em> to feed <em>ShouldContinue()</em>,
then you can wrap the internals of <em>ShouldContinue()</em> with a TransactionScope
using block specifying TransactionScopeOption.Suppress. This will not add the resource
access contained within the block to the ambient transaction. 
</p>
        <p>
3. Use an intelligent data access library like Enterprise Library that manages your
connections for you. It won't close the connection if enlisted in a transaction. 
</p>
        <p>
  
</p>
        <p>
Look at your code before you involve your network dudes. This is more common when
integrating legacy code with new service calls. 
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=bc3f77a3-9d3a-44cf-ba92-d71125cdc5bd" />
      </body>
      <title>Communication with the underlying transaction manager has failed.</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,bc3f77a3-9d3a-44cf-ba92-d71125cdc5bd.aspx</guid>
      <link>http://offroadcoder.com/2008/10/30/CommunicationWithTheUnderlyingTransactionManagerHasFailed.aspx</link>
      <pubDate>Thu, 30 Oct 2008 02:54:29 GMT</pubDate>
      <description>&lt;p&gt;
Don't be so quick to blame the service or MSDTC when you see the error "Communication
with the underlying transaction manager has failed."
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Symptom:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
An error message that reads something like: &lt;blockquote&gt; 
&lt;p&gt;
System.Transactions.TransactionManagerCommunicationException: Communication with the
underlying transaction manager has failed. ---&amp;gt; System.Runtime.InteropServices.COMException
(0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Solutions:&lt;/strong&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
"Check your firewall settings" is what you will find in almost all forum posts and
on MSDN. You need port 135 open bi-directionally for RPC's end point mapper (EPM).
You also need ports 1024-5000 open bi-directionally if you have not specified your
own port settings for RPC in the registry. If you have your own ports specified in
the registry, then those need to be open bi-directionally. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;WHAT ?!? &lt;/em&gt;&lt;/strong&gt;It may also be your code causing the issue. If
you are using TransactionScope, you have to be mindful of every method called within
the using braces. Looking at the code below, you will see two service calls and a
seemingly innocuous &lt;em&gt;ShouldContinue()&lt;/em&gt; method checking to see if the second
operation should be called. &lt;blockquote&gt; 
&lt;p&gt;
&lt;font color="#0000ff"&gt;using&lt;/font&gt; (TransactionScope scope = new TransactionScope()) 
&lt;p&gt;
&lt;font color="#0000ff"&gt;using&lt;/font&gt; (MyServiceClient proxy = new MyServiceClient()) 
&lt;p&gt;
{ 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy.DoOperationOne(someID); 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;if&lt;/font&gt; (ShouldContinue()) &lt;font color="#008000"&gt;//
uh, oh! What if this has an ADO.NET connection that is opened and closed inside it?&lt;/font&gt; 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { 
&lt;p&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;
proxy.DoOperationTwo(someOtherID); 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;p&gt;
}
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
If &lt;em&gt;ShouldContinue()&lt;/em&gt; opens and closes an SqlConnection, the TransactionScope
object has no means by which to commit or rollback this part of the transaction. This
will cause the error "Communication with the underlying transaction manager has failed." 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
1. If you do not need to results of &lt;em&gt;DoOperationOne()&lt;/em&gt; to feed &lt;em&gt;ShouldContinue()&lt;/em&gt;,
then do that logic before the TransactionScope using block. 
&lt;p&gt;
2. If you do need the result of &lt;em&gt;DoOperationOne()&lt;/em&gt; to feed &lt;em&gt;ShouldContinue()&lt;/em&gt;,
then you can wrap the internals of &lt;em&gt;ShouldContinue()&lt;/em&gt; with a TransactionScope
using block specifying TransactionScopeOption.Suppress. This will not add the resource
access contained within the block to the ambient transaction. 
&lt;p&gt;
3. Use an intelligent data access library like Enterprise Library that manages your
connections for you. It won't close the connection if enlisted in a transaction. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Look at your code before you involve your network dudes. This is more common when
integrating legacy code with new service calls. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=bc3f77a3-9d3a-44cf-ba92-d71125cdc5bd" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,bc3f77a3-9d3a-44cf-ba92-d71125cdc5bd.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>MSDTC</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=cfeeb9f7-2a9e-40a5-99ce-dea714e3284d</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,cfeeb9f7-2a9e-40a5-99ce-dea714e3284d.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,cfeeb9f7-2a9e-40a5-99ce-dea714e3284d.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=cfeeb9f7-2a9e-40a5-99ce-dea714e3284d</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
WCF never ceases to amaze me. Around every corner is another fascinating use for WCF,
and much forethought on Microsoft's part to make it look and behave great. I wanted
to expose my services to my AJAX functions on my web site. I did not want to change
my class library because it is used by other clients. I could just add the service
classes to this web site, but why re-do when you can re-use.
</p>
        <p>
If you have an existing WCF Service Library, you will need to expose it with the <font color="#0000ff">AspNetCompatibilityRequirementsMode</font>.Allowed
attribute on the service class to make it visible to ASP.NET clients. To avoid changing
your service library in any way, the easiest thing to do is to add a new class to
your web site that inherits from your service class. In this example, my existing
service library uses the <em>JeepServices</em> namespace. Notice there is no implementation
in this class. It is simply a placeholder for the real service implementation with
the compatibility attribute attached.
</p>
        <p>
          <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red225\green225\blue138;\red63\green63\blue63;\red220\green220\blue204;\red223\green223\blue191;\red43\green145\blue175;}??\fs18 \cf1\cb2\highlight2 {\b using}\cf3  \cf4 System\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 Linq\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 Runtime\cf3 .\cf4 Serialization\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Activation\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Web\cf3 ;\par ??\par ??[\cf5 ServiceBehavior\cf3 (\cf4 IncludeExceptionDetailInFaults\cf3  = \cf1 {\b true}\cf3 )]\par ??[\cf5 AspNetCompatibilityRequirements\cf3 (\cf4 RequirementsMode\cf3  = \cf5 AspNetCompatibilityRequirementsMode\cf3 .\cf4 Allowed\cf3 )]\par ??\cf1 {\b public}\cf3  \cf1 {\b class}\cf3  \cf5 WebHttpService\cf3  : \cf4 JeepServices\cf3 .\cf5 Service\par ??\cf3 \{\par ??\}}
-->
        </p>
        <p>
          <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red225\green225\blue138;\red63\green63\blue63;\red220\green220\blue204;\red223\green223\blue191;\red43\green145\blue175;}??\fs18 \cf1\cb2\highlight2 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Activation\cf3 ;\par ??\par ??[\cf5 ServiceBehavior\cf3 (\cf4 IncludeExceptionDetailInFaults\cf3  = \cf1 {\b true}\cf3 )]\par ??[\cf5 AspNetCompatibilityRequirements\cf3 (\cf4 RequirementsMode\cf3  = \cf5 AspNetCompatibilityRequirementsMode\cf3 .\cf4 Allowed\cf3 )]\par ??\cf1 {\b public}\cf3  \cf1 {\b class}\cf3  \cf5 WebHttpService\cf3  : \cf4 JeepServices\cf3 .\cf5 Service\par ??\cf3 \{\par ??\}}
-->
        </p>
        <div style="font-size: 9pt; background: #3f3f3f; width: 817px; color: #dcdccc; font-family: consolas; height: 126px">
          <p style="margin: 0px">
            <span style="color: #85ac8d">    1</span> <span style="font-weight: bold; color: #e1e18a">using</span><span style="color: #dfdfbf">System</span>.<span style="color: #dfdfbf">ServiceModel</span>;
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    2</span> <span style="font-weight: bold; color: #e1e18a">using</span><span style="color: #dfdfbf">System</span>.<span style="color: #dfdfbf">ServiceModel</span>.<span style="color: #dfdfbf">Activation</span>;
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    3</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    4</span> [<span style="color: #2b91af">ServiceBehavior</span>]
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    5</span> [<span style="color: #2b91af">AspNetCompatibilityRequirements</span>(<span style="color: #dfdfbf">RequirementsMode</span> = <span style="color: #2b91af">AspNetCompatibilityRequirementsMode</span>.<span style="color: #dfdfbf">Allowed</span>)]
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    6</span> <span style="font-weight: bold; color: #e1e18a">public</span><span style="font-weight: bold; color: #e1e18a">class</span><span style="color: #2b91af">WebHttpService</span> : <span style="color: #dfdfbf">JeepServices</span>.<span style="color: #2b91af">Service</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    7</span> {
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    8</span> }
</p>
        </div>
        <p>
        </p>
        <p>
Now that I have a ASP.NET compatible service, I need to expose it to the web site
clients. Create a service file (.svc), and change the <em>Service</em> and <em>CodeBehind</em> attributes
to point to the .svc file. The last thing you need is the <em>Factory</em> attribute.
This notifies WCF of this service, eliminating the need for a configuration file entry
for the service endpoint. In fact, you don't even need the &lt;system.servicemodel&gt;
in your configuration file at all. This is because it is only hosted as a web script,
and cannot be called outside of the web site.
</p>
        <p>
          <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;}??\fs18 \cb2\highlight2 &lt;%\cf3\cb4\highlight4 @\cf5  \cf6 ServiceHost\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 Debug\cf3 =\cf8 "true"\cf5  \cf7 Service\cf3 =\cf8 "WebHttpService"\cf5  \cf7 CodeBehind\cf3 =\cf8 "~/App_Code/WebHttpService.cs"\par ??\cf5 \tab \cf7 Factory\cf3 =\cf8 "System.ServiceModel.Activation.WebScriptServiceHostFactory"\cf5  \cf0\cb2\highlight2 %&gt;}
-->
        </p>
        <div style="font-size: 9pt; background: #3f3f3f; width: 816px; color: #dcdccc; font-family: consolas; height: 43px">
          <p style="margin: 0px">
            <span style="color: #85ac8d">    1</span> <span style="background: #ffee62">&lt;%</span><span style="color: #efef8f">@</span><span style="color: #e3ceab">ServiceHost</span><span style="color: #dfdfbf">Language</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"C#"</span><span style="color: #dfdfbf">Debug</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"true"</span><span style="color: #dfdfbf">Service</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"WebHttpService"</span><span style="color: #dfdfbf">CodeBehind</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"~/App_Code/WebHttpService.cs"</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    2</span>     <span style="color: #dfdfbf">Factory</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"System.ServiceModel.Activation.WebScriptServiceHostFactory"</span><span style="background: #ffee62">%&gt;</span></p>
        </div>
        <p>
 
</p>
        <p>
In your web page you will need a few things. First your will need a <em>ScriptManager</em> with
a <em>ServiceReference</em> to the .svc file. You will then need the Javascript functions
to make the call (<em>DoJeepWork</em>), handle the success message (<em>OnJeepWorkSucceeded</em>),
and handle the failure message (<em>OnJeepWorkFailed</em>). Notice in <em>DoJeepWork</em> that
you don't call the service by it's service name <em>WebHttpService</em>, you call
it by the ServiceContract namespace and name. For this example, my interface has ServiceContract
attributes Namespace = "JeepServices", and Name = "JeepServiceContract". Now you just
wire up a ASP.NET control's OnClientClick or an input or anchor tag's onclick to <em>DoJeepWork()</em> and
you are good to go.
</p>
        <p>
          <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;\red225\green225\blue138;\red200\green145\blue145;\red127\green159\blue127;}??\fs18 \cb2\highlight2 &lt;%\cf3\cb4\highlight4 @\cf5  \cf6 Page\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 AutoEventWireup\cf3 =\cf8 "true"\cf5  \cf7 CodeFile\cf3 =\cf8 "Default.aspx.cs"\cf5  \cf7 Inherits\cf3 =\cf8 "_Default"\cf5  \cf0\cb2\highlight2 %&gt;\par ??\par ??\cf3\cb4\highlight4 &lt;!\cf6 DOCTYPE\cf5  \cf7 html\cf5  \cf7 PUBLIC\cf5  \cf8 "-//W3C//DTD XHTML 1.0 Transitional//EN"\cf5  \cf8 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\cf3 &gt;\par ??&lt;\cf6 html\cf5  \cf7 xmlns\cf3 =\cf8 "http://www.w3.org/1999/xhtml"\cf3 &gt;\par ??&lt;\cf6 head\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 title\cf3 &gt;\cf5 Test page\cf3 &lt;/\cf6 title\cf3 &gt;\par ??\par ??\cf5 \tab \cf3 &lt;\cf6 script\cf5  \cf7 type\cf3 =\cf8 "text/javascript"\cf3 &gt;\par ??\cf5 \tab \tab \cf9 {\b function}\cf5  \cf7 DoJeepWork\cf5 ()\par ??\tab \tab \{    \par ??\tab \tab \tab \cf7 JeepServices\cf5 .\cf7 JeepServiceContract\cf5 .\cf7 DoWork\cf5 (\cf7 OnJeepWorkSuccedeed\cf5 , \cf7 OnJeepWorkFailed\cf5 );\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkSuccedeed\cf5 (\cf7 res\cf5 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf7 document\cf5 .\cf7 getElementById\cf5 (\cf10 "&lt;%= this.lblMessage.ClientID %&gt;"\cf5 ).\cf7 innerText\cf5  = \cf7 res\cf5 ;\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkFailed\cf5 (\cf7 error\cf5 )\par ??\tab \tab \{\par ??\tab \tab     \cf11 // Alert user to the error.    \par ??\cf5 \tab \tab     \cf7 alert\cf5 (\cf7 error\cf5 .\cf7 get_message\cf5 ());\par ??\tab \tab \}\par ??\tab \cf3 &lt;/\cf6 script\cf3 &gt;\par ??\par ??&lt;/\cf6 head\cf3 &gt;\par ??&lt;\cf6 body\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 form\cf5  \cf7 id\cf3 =\cf8 "form1"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 div\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 ScriptManager\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \tab \tab \cf3 &lt;\cf6 Services\cf3 &gt;\par ??\cf5 \tab \tab \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 ServiceReference\cf5  \cf7 Path\cf3 =\cf8 "~/Services/WebHttpService.svc"\cf5  \cf7 InlineScript\cf3 =\cf8 "false"\cf5  \cf3 /&gt;\par ??\cf5 \tab \tab \tab \cf3 &lt;/\cf6 Services\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;/\cf6 asp\cf3 :\cf6 ScriptManager\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 Label\cf5  \cf7 ID\cf3 =\cf8 "lblMessage"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf5  \cf7 Text\cf3 =\cf8 "No work has been done"\cf5  \cf3 /&gt;\cf5  \cf3 &lt;\cf6 a\cf5  \cf7 href\cf3 =\cf8 "javascript:void(0); DoJeepWork()"\cf3 &gt;\cf5 Do Work\cf3 &lt;/\cf6 a\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;/\cf6 div\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;/\cf6 form\cf3 &gt;\par ??&lt;/\cf6 body\cf3 &gt;\par ??&lt;/\cf6 html\cf3 &gt;}
-->
        </p>
        <p>
        </p>
        <p>
          <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;\red225\green225\blue138;\red200\green145\blue145;\red127\green159\blue127;}??\fs18 \cb2\highlight2 &lt;%\cf3\cb4\highlight4 @\cf5  \cf6 Page\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 AutoEventWireup\cf3 =\cf8 "true"\cf5  \cf7 CodeFile\cf3 =\cf8 "Default.aspx.cs"\cf5  \cf7 Inherits\cf3 =\cf8 "_Default"\cf5  \cf0\cb2\highlight2 %&gt;\par ??\par ??\cf3\cb4\highlight4 &lt;!\cf6 DOCTYPE\cf5  \cf7 html\cf5  \cf7 PUBLIC\cf5  \cf8 "-//W3C//DTD XHTML 1.0 Transitional//EN"\par ??"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\cf3 &gt;\par ??&lt;\cf6 html\cf5  \cf7 xmlns\cf3 =\cf8 "http://www.w3.org/1999/xhtml"\cf3 &gt;\par ??&lt;\cf6 head\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 title\cf3 &gt;\cf5 Test page\cf3 &lt;/\cf6 title\cf3 &gt;\par ??\par ??\cf5 \tab \cf3 &lt;\cf6 script\cf5  \cf7 type\cf3 =\cf8 "text/javascript"\cf3 &gt;\par ??\cf5 \tab \tab \cf9 {\b function}\cf5  \cf7 DoJeepWork\cf5 () \{\par ??\tab \tab \tab \cf7 JeepServices\cf5 .\cf7 JeepServiceContract\cf5 .\cf7 DoWork\cf5 (\cf7 OnJeepWorkSuccedeed\cf5 , \cf7 OnJeepWorkFailed\cf5 );\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkSuccedeed\cf5 (\cf7 res\cf5 ) \{\par ??\tab \tab \tab \cf7 document\cf5 .\cf7 getElementById\cf5 (\cf10 "&lt;%= this.lblMessage.ClientID %&gt;"\cf5 ).\cf7 innerText\cf5  = \cf7 res\cf5 ;\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkFailed\cf5 (\cf7 error\cf5 ) \{\par ??\tab \tab \tab \cf11 // Alert user to the error.    \par ??\cf5 \tab \tab \tab \cf7 alert\cf5 (\cf7 error\cf5 .\cf7 get_message\cf5 ());\par ??\tab \tab \}\par ??\tab \cf3 &lt;/\cf6 script\cf3 &gt;\par ??\par ??&lt;/\cf6 head\cf3 &gt;\par ??&lt;\cf6 body\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 form\cf5  \cf7 id\cf3 =\cf8 "form1"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 div\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 ScriptManager\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \tab \tab \cf3 &lt;\cf6 Services\cf3 &gt;\par ??\cf5 \tab \tab \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 ServiceReference\cf5  \cf7 Path\cf3 =\cf8 "~/Services/WebHttpService.svc"\cf5  \cf7 InlineScript\cf3 =\cf8 "false"\cf5  \cf3 /&gt;\par ??\cf5 \tab \tab \tab \cf3 &lt;/\cf6 Services\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;/\cf6 asp\cf3 :\cf6 ScriptManager\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 Label\cf5  \cf7 ID\cf3 =\cf8 "lblMessage"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf5  \cf7 Text\cf3 =\cf8 "No work has been done"\cf5  \cf3 /&gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 a\cf5  \cf7 href\cf3 =\cf8 "javascript:void(0); DoJeepWork()"\cf3 &gt;\cf5 Do Work\cf3 &lt;/\cf6 a\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;/\cf6 div\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;/\cf6 form\cf3 &gt;\par ??&lt;/\cf6 body\cf3 &gt;\par ??&lt;/\cf6 html\cf3 &gt;\par ??}
-->
        </p>
        <div style="font-size: 9pt; background: #3f3f3f; width: 819px; color: #dcdccc; font-family: consolas; height: 519px">
          <p style="margin: 0px">
            <span style="color: #85ac8d">    1</span> <span style="background: #ffee62">&lt;%</span><span style="color: #efef8f">@</span><span style="color: #e3ceab">Page</span><span style="color: #dfdfbf">Language</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"C#"</span><span style="color: #dfdfbf">AutoEventWireup</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"true"</span><span style="color: #dfdfbf">CodeFile</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"Default.aspx.cs"</span><span style="color: #dfdfbf">Inherits</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"_Default"</span><span style="background: #ffee62">%&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    2</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    3</span> <span style="color: #efef8f">&lt;!</span><span style="color: #e3ceab">DOCTYPE</span><span style="color: #dfdfbf">html</span><span style="color: #dfdfbf">PUBLIC</span><span style="color: #cc9393">"-//W3C//DTD
XHTML 1.0 Transitional//EN"</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    4</span> <span style="color: #cc9393">"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    5</span> <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">html</span><span style="color: #dfdfbf">xmlns</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"http://www.w3.org/1999/xhtml"</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    6</span> <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">head</span><span style="color: #dfdfbf">runat</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"server"</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    7</span>     <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">title</span><span style="color: #efef8f">&gt;</span>Test
page<span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">title</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    8</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    9</span>     <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">script</span><span style="color: #dfdfbf">type</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"text/javascript"</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   10</span>         <span style="font-weight: bold; color: #e1e18a">function</span><span style="color: #dfdfbf">DoJeepWork</span>()
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   11</span>             <span style="color: #dfdfbf">JeepServices</span>.<span style="color: #dfdfbf">JeepServiceContract</span>.<span style="color: #dfdfbf">DoWork</span>(<span style="color: #dfdfbf">OnJeepWorkSuccedeed</span>, <span style="color: #dfdfbf">OnJeepWorkFailed</span>);
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   12</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   13</span>         <span style="font-weight: bold; color: #e1e18a">function</span><span style="color: #dfdfbf">OnJeepWorkSuccedeed</span>(<span style="color: #dfdfbf">res</span>)
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   14</span>             <span style="color: #dfdfbf">document</span>.<span style="color: #dfdfbf">getElementById</span>(<span style="color: #c89191">"&lt;%=
this.lblMessage.ClientID %&gt;"</span>).<span style="color: #dfdfbf">innerText</span> = <span style="color: #dfdfbf">res</span>;
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   15</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   16</span>         <span style="font-weight: bold; color: #e1e18a">function</span><span style="color: #dfdfbf">OnJeepWorkFailed</span>(<span style="color: #dfdfbf">error</span>)
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   17</span>             <span style="color: #7f9f7f">//
Alert user to the error.    </span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   18</span>             <span style="color: #dfdfbf">alert</span>(<span style="color: #dfdfbf">error</span>.<span style="color: #dfdfbf">get_message</span>());
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   19</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   20</span>     <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">script</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   21</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   22</span> <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">head</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   23</span> <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">body</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   24</span>     <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">form</span><span style="color: #dfdfbf">id</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"form1"</span><span style="color: #dfdfbf">runat</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"server"</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   25</span>     <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   26</span>         <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">asp</span><span style="color: #efef8f">:</span><span style="color: #e3ceab">ScriptManager</span><span style="color: #dfdfbf">runat</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"server"</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   27</span>             <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">Services</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   28</span>                 <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">asp</span><span style="color: #efef8f">:</span><span style="color: #e3ceab">ServiceReference</span><span style="color: #dfdfbf">Path</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"~/Services/WebHttpService.svc"</span><span style="color: #dfdfbf">InlineScript</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"false"</span><span style="color: #efef8f">/&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   29</span>             <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">Services</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   30</span>         <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">asp</span><span style="color: #efef8f">:</span><span style="color: #e3ceab">ScriptManager</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   31</span>         <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">asp</span><span style="color: #efef8f">:</span><span style="color: #e3ceab">Label</span><span style="color: #dfdfbf">ID</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"lblMessage"</span><span style="color: #dfdfbf">runat</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"server"</span><span style="color: #dfdfbf">Text</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"No
work has been done"</span><span style="color: #efef8f">/&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   32</span>         <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">a</span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"javascript:void(0);
DoJeepWork()"</span><span style="color: #efef8f">&gt;</span>Do Work<span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   33</span>     <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   34</span>     <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">form</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   35</span> <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">body</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   36</span> <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">html</span><span style="color: #efef8f">&gt;</span></p>
        </div>
        <p>
 
</p>
        <p>
Mission accomplished! Here you've seen how to expose an existing WCF service library
without changing any code in the library itself. Adding two files allowed the service
to be exposed to your AJAX clients. Best of all, there is no configuration file changes
to make.
</p>
        <p>
        </p>
        <p>
Useful Links:
</p>
        <ul>
          <li>
            <a href="http://msdn.microsoft.com/en-us/library/bb514961.aspx">Exposing WCF Services
to Client Script</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=cfeeb9f7-2a9e-40a5-99ce-dea714e3284d" />
      </body>
      <title>Exposing existing WCF services to ASP.NET AJAX clients</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,cfeeb9f7-2a9e-40a5-99ce-dea714e3284d.aspx</guid>
      <link>http://offroadcoder.com/2008/09/21/ExposingExistingWCFServicesToASPNETAJAXClients.aspx</link>
      <pubDate>Sun, 21 Sep 2008 16:21:24 GMT</pubDate>
      <description>&lt;p&gt;
WCF never ceases to amaze me. Around every corner is another fascinating use for WCF,
and much forethought on Microsoft's part to make it look and behave great. I wanted
to expose my services to my AJAX functions on my web site. I did not want to change
my class library because it is used by other clients. I could just add the service
classes to this web site, but why re-do when you can re-use.
&lt;/p&gt;
&lt;p&gt;
If you have an existing WCF Service Library, you will need to expose it with the &lt;font color="#0000ff"&gt;AspNetCompatibilityRequirementsMode&lt;/font&gt;.Allowed
attribute on the service class to make it visible to ASP.NET clients. To avoid changing
your service library in any way, the easiest thing to do is to add a new class to
your web site that inherits from your service class. In this example, my existing
service library uses the &lt;em&gt;JeepServices&lt;/em&gt; namespace. Notice there is no implementation
in this class. It is simply a placeholder for the real service implementation with
the compatibility attribute attached.
&lt;/p&gt;
&lt;p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red225\green225\blue138;\red63\green63\blue63;\red220\green220\blue204;\red223\green223\blue191;\red43\green145\blue175;}??\fs18 \cf1\cb2\highlight2 {\b using}\cf3  \cf4 System\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 Linq\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 Runtime\cf3 .\cf4 Serialization\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Activation\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Web\cf3 ;\par ??\par ??[\cf5 ServiceBehavior\cf3 (\cf4 IncludeExceptionDetailInFaults\cf3  = \cf1 {\b true}\cf3 )]\par ??[\cf5 AspNetCompatibilityRequirements\cf3 (\cf4 RequirementsMode\cf3  = \cf5 AspNetCompatibilityRequirementsMode\cf3 .\cf4 Allowed\cf3 )]\par ??\cf1 {\b public}\cf3  \cf1 {\b class}\cf3  \cf5 WebHttpService\cf3  : \cf4 JeepServices\cf3 .\cf5 Service\par ??\cf3 \{\par ??\}}
--&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red225\green225\blue138;\red63\green63\blue63;\red220\green220\blue204;\red223\green223\blue191;\red43\green145\blue175;}??\fs18 \cf1\cb2\highlight2 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Activation\cf3 ;\par ??\par ??[\cf5 ServiceBehavior\cf3 (\cf4 IncludeExceptionDetailInFaults\cf3  = \cf1 {\b true}\cf3 )]\par ??[\cf5 AspNetCompatibilityRequirements\cf3 (\cf4 RequirementsMode\cf3  = \cf5 AspNetCompatibilityRequirementsMode\cf3 .\cf4 Allowed\cf3 )]\par ??\cf1 {\b public}\cf3  \cf1 {\b class}\cf3  \cf5 WebHttpService\cf3  : \cf4 JeepServices\cf3 .\cf5 Service\par ??\cf3 \{\par ??\}}
--&gt;
&lt;/p&gt;
&lt;div style="font-size: 9pt; background: #3f3f3f; width: 817px; color: #dcdccc; font-family: consolas; height: 126px"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="font-weight: bold; color: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;ServiceModel&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;&lt;span style="font-weight: bold; color: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;ServiceModel&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;Activation&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt; [&lt;span style="color: #2b91af"&gt;ServiceBehavior&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt; [&lt;span style="color: #2b91af"&gt;AspNetCompatibilityRequirements&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;RequirementsMode&lt;/span&gt; = &lt;span style="color: #2b91af"&gt;AspNetCompatibilityRequirementsMode&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;Allowed&lt;/span&gt;)]
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/span&gt;&amp;nbsp;&lt;span style="font-weight: bold; color: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold; color: #e1e18a"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;WebHttpService&lt;/span&gt; : &lt;span style="color: #dfdfbf"&gt;JeepServices&lt;/span&gt;.&lt;span style="color: #2b91af"&gt;Service&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/span&gt; {
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/span&gt; }
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Now that I have a ASP.NET compatible service, I need to expose it to the web site
clients. Create a service file (.svc), and change the &lt;em&gt;Service&lt;/em&gt; and &lt;em&gt;CodeBehind&lt;/em&gt; attributes
to point to the .svc file. The last thing you need is the &lt;em&gt;Factory&lt;/em&gt; attribute.
This notifies WCF of this service, eliminating the need for a configuration file entry
for the service endpoint. In fact, you don't even need the &amp;lt;system.servicemodel&amp;gt;
in your configuration file at all. This is because it is only hosted as a web script,
and cannot be called outside of the web site.
&lt;/p&gt;
&lt;p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;}??\fs18 \cb2\highlight2 &amp;lt;%\cf3\cb4\highlight4 @\cf5  \cf6 ServiceHost\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 Debug\cf3 =\cf8 "true"\cf5  \cf7 Service\cf3 =\cf8 "WebHttpService"\cf5  \cf7 CodeBehind\cf3 =\cf8 "~/App_Code/WebHttpService.cs"\par ??\cf5 \tab \cf7 Factory\cf3 =\cf8 "System.ServiceModel.Activation.WebScriptServiceHostFactory"\cf5  \cf0\cb2\highlight2 %&amp;gt;}
--&gt;
&lt;/p&gt;
&lt;div style="font-size: 9pt; background: #3f3f3f; width: 816px; color: #dcdccc; font-family: consolas; height: 43px"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #efef8f"&gt;@&lt;/span&gt; &lt;span style="color: #e3ceab"&gt;ServiceHost&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Language&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"C#"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Debug&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"true"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Service&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"WebHttpService"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;CodeBehind&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"~/App_Code/WebHttpService.cs"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #dfdfbf"&gt;Factory&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"System.ServiceModel.Activation.WebScriptServiceHostFactory"&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
In your web page you will need a few things. First your will need a &lt;em&gt;ScriptManager&lt;/em&gt; with
a &lt;em&gt;ServiceReference&lt;/em&gt; to the .svc file. You will then need the Javascript functions
to make the call (&lt;em&gt;DoJeepWork&lt;/em&gt;), handle the success message (&lt;em&gt;OnJeepWorkSucceeded&lt;/em&gt;),
and handle the failure message (&lt;em&gt;OnJeepWorkFailed&lt;/em&gt;). Notice in &lt;em&gt;DoJeepWork&lt;/em&gt; that
you don't call the service by it's service name &lt;em&gt;WebHttpService&lt;/em&gt;, you call
it by the ServiceContract namespace and name. For this example, my interface has ServiceContract
attributes Namespace = "JeepServices", and Name = "JeepServiceContract". Now you just
wire up a ASP.NET control's OnClientClick or an input or anchor tag's onclick to &lt;em&gt;DoJeepWork()&lt;/em&gt; and
you are good to go.
&lt;/p&gt;
&lt;p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;\red225\green225\blue138;\red200\green145\blue145;\red127\green159\blue127;}??\fs18 \cb2\highlight2 &amp;lt;%\cf3\cb4\highlight4 @\cf5  \cf6 Page\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 AutoEventWireup\cf3 =\cf8 "true"\cf5  \cf7 CodeFile\cf3 =\cf8 "Default.aspx.cs"\cf5  \cf7 Inherits\cf3 =\cf8 "_Default"\cf5  \cf0\cb2\highlight2 %&amp;gt;\par ??\par ??\cf3\cb4\highlight4 &amp;lt;!\cf6 DOCTYPE\cf5  \cf7 html\cf5  \cf7 PUBLIC\cf5  \cf8 "-//W3C//DTD XHTML 1.0 Transitional//EN"\cf5  \cf8 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\cf3 &amp;gt;\par ??&amp;lt;\cf6 html\cf5  \cf7 xmlns\cf3 =\cf8 "http://www.w3.org/1999/xhtml"\cf3 &amp;gt;\par ??&amp;lt;\cf6 head\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 title\cf3 &amp;gt;\cf5 Test page\cf3 &amp;lt;/\cf6 title\cf3 &amp;gt;\par ??\par ??\cf5 \tab \cf3 &amp;lt;\cf6 script\cf5  \cf7 type\cf3 =\cf8 "text/javascript"\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf9 {\b function}\cf5  \cf7 DoJeepWork\cf5 ()\par ??\tab \tab \{    \par ??\tab \tab \tab \cf7 JeepServices\cf5 .\cf7 JeepServiceContract\cf5 .\cf7 DoWork\cf5 (\cf7 OnJeepWorkSuccedeed\cf5 , \cf7 OnJeepWorkFailed\cf5 );\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkSuccedeed\cf5 (\cf7 res\cf5 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf7 document\cf5 .\cf7 getElementById\cf5 (\cf10 "&amp;lt;%= this.lblMessage.ClientID %&amp;gt;"\cf5 ).\cf7 innerText\cf5  = \cf7 res\cf5 ;\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkFailed\cf5 (\cf7 error\cf5 )\par ??\tab \tab \{\par ??\tab \tab     \cf11 // Alert user to the error.    \par ??\cf5 \tab \tab     \cf7 alert\cf5 (\cf7 error\cf5 .\cf7 get_message\cf5 ());\par ??\tab \tab \}\par ??\tab \cf3 &amp;lt;/\cf6 script\cf3 &amp;gt;\par ??\par ??&amp;lt;/\cf6 head\cf3 &amp;gt;\par ??&amp;lt;\cf6 body\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 form\cf5  \cf7 id\cf3 =\cf8 "form1"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 div\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 ScriptManager\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \tab \tab \cf3 &amp;lt;\cf6 Services\cf3 &amp;gt;\par ??\cf5 \tab \tab \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 ServiceReference\cf5  \cf7 Path\cf3 =\cf8 "~/Services/WebHttpService.svc"\cf5  \cf7 InlineScript\cf3 =\cf8 "false"\cf5  \cf3 /&amp;gt;\par ??\cf5 \tab \tab \tab \cf3 &amp;lt;/\cf6 Services\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;/\cf6 asp\cf3 :\cf6 ScriptManager\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 Label\cf5  \cf7 ID\cf3 =\cf8 "lblMessage"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf5  \cf7 Text\cf3 =\cf8 "No work has been done"\cf5  \cf3 /&amp;gt;\cf5  \cf3 &amp;lt;\cf6 a\cf5  \cf7 href\cf3 =\cf8 "javascript:void(0); DoJeepWork()"\cf3 &amp;gt;\cf5 Do Work\cf3 &amp;lt;/\cf6 a\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;/\cf6 div\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;/\cf6 form\cf3 &amp;gt;\par ??&amp;lt;/\cf6 body\cf3 &amp;gt;\par ??&amp;lt;/\cf6 html\cf3 &amp;gt;}
--&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;\red225\green225\blue138;\red200\green145\blue145;\red127\green159\blue127;}??\fs18 \cb2\highlight2 &amp;lt;%\cf3\cb4\highlight4 @\cf5  \cf6 Page\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 AutoEventWireup\cf3 =\cf8 "true"\cf5  \cf7 CodeFile\cf3 =\cf8 "Default.aspx.cs"\cf5  \cf7 Inherits\cf3 =\cf8 "_Default"\cf5  \cf0\cb2\highlight2 %&amp;gt;\par ??\par ??\cf3\cb4\highlight4 &amp;lt;!\cf6 DOCTYPE\cf5  \cf7 html\cf5  \cf7 PUBLIC\cf5  \cf8 "-//W3C//DTD XHTML 1.0 Transitional//EN"\par ??"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\cf3 &amp;gt;\par ??&amp;lt;\cf6 html\cf5  \cf7 xmlns\cf3 =\cf8 "http://www.w3.org/1999/xhtml"\cf3 &amp;gt;\par ??&amp;lt;\cf6 head\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 title\cf3 &amp;gt;\cf5 Test page\cf3 &amp;lt;/\cf6 title\cf3 &amp;gt;\par ??\par ??\cf5 \tab \cf3 &amp;lt;\cf6 script\cf5  \cf7 type\cf3 =\cf8 "text/javascript"\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf9 {\b function}\cf5  \cf7 DoJeepWork\cf5 () \{\par ??\tab \tab \tab \cf7 JeepServices\cf5 .\cf7 JeepServiceContract\cf5 .\cf7 DoWork\cf5 (\cf7 OnJeepWorkSuccedeed\cf5 , \cf7 OnJeepWorkFailed\cf5 );\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkSuccedeed\cf5 (\cf7 res\cf5 ) \{\par ??\tab \tab \tab \cf7 document\cf5 .\cf7 getElementById\cf5 (\cf10 "&amp;lt;%= this.lblMessage.ClientID %&amp;gt;"\cf5 ).\cf7 innerText\cf5  = \cf7 res\cf5 ;\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkFailed\cf5 (\cf7 error\cf5 ) \{\par ??\tab \tab \tab \cf11 // Alert user to the error.    \par ??\cf5 \tab \tab \tab \cf7 alert\cf5 (\cf7 error\cf5 .\cf7 get_message\cf5 ());\par ??\tab \tab \}\par ??\tab \cf3 &amp;lt;/\cf6 script\cf3 &amp;gt;\par ??\par ??&amp;lt;/\cf6 head\cf3 &amp;gt;\par ??&amp;lt;\cf6 body\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 form\cf5  \cf7 id\cf3 =\cf8 "form1"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 div\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 ScriptManager\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \tab \tab \cf3 &amp;lt;\cf6 Services\cf3 &amp;gt;\par ??\cf5 \tab \tab \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 ServiceReference\cf5  \cf7 Path\cf3 =\cf8 "~/Services/WebHttpService.svc"\cf5  \cf7 InlineScript\cf3 =\cf8 "false"\cf5  \cf3 /&amp;gt;\par ??\cf5 \tab \tab \tab \cf3 &amp;lt;/\cf6 Services\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;/\cf6 asp\cf3 :\cf6 ScriptManager\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 Label\cf5  \cf7 ID\cf3 =\cf8 "lblMessage"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf5  \cf7 Text\cf3 =\cf8 "No work has been done"\cf5  \cf3 /&amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 a\cf5  \cf7 href\cf3 =\cf8 "javascript:void(0); DoJeepWork()"\cf3 &amp;gt;\cf5 Do Work\cf3 &amp;lt;/\cf6 a\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;/\cf6 div\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;/\cf6 form\cf3 &amp;gt;\par ??&amp;lt;/\cf6 body\cf3 &amp;gt;\par ??&amp;lt;/\cf6 html\cf3 &amp;gt;\par ??}
--&gt;
&lt;/p&gt;
&lt;div style="font-size: 9pt; background: #3f3f3f; width: 819px; color: #dcdccc; font-family: consolas; height: 519px"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #efef8f"&gt;@&lt;/span&gt; &lt;span style="color: #e3ceab"&gt;Page&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Language&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"C#"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"true"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;CodeFile&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"Default.aspx.cs"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Inherits&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"_Default"&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;html&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;PUBLIC&lt;/span&gt; &lt;span style="color: #cc9393"&gt;"-//W3C//DTD
XHTML 1.0 Transitional//EN"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc9393"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;html&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;xmlns&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;head&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;runat&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"server"&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;title&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;Test
page&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;title&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;script&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;type&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"text/javascript"&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;function&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;DoJeepWork&lt;/span&gt;()
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 11&lt;/span&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 style="color: #dfdfbf"&gt;JeepServices&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;JeepServiceContract&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;DoWork&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;OnJeepWorkSuccedeed&lt;/span&gt;, &lt;span style="color: #dfdfbf"&gt;OnJeepWorkFailed&lt;/span&gt;);
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;function&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;OnJeepWorkSuccedeed&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;res&lt;/span&gt;)
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 14&lt;/span&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 style="color: #dfdfbf"&gt;document&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;getElementById&lt;/span&gt;(&lt;span style="color: #c89191"&gt;"&amp;lt;%=
this.lblMessage.ClientID %&amp;gt;"&lt;/span&gt;).&lt;span style="color: #dfdfbf"&gt;innerText&lt;/span&gt; = &lt;span style="color: #dfdfbf"&gt;res&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;function&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;OnJeepWorkFailed&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;error&lt;/span&gt;)
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 17&lt;/span&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 style="color: #7f9f7f"&gt;//
Alert user to the error.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 18&lt;/span&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 style="color: #dfdfbf"&gt;alert&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;error&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;get_message&lt;/span&gt;());
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;script&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 21&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 22&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;head&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 23&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;body&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;form&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;id&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"form1"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;runat&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"server"&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;div&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;asp&lt;/span&gt;&lt;span style="color: #efef8f"&gt;:&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;ScriptManager&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;runat&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"server"&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 27&lt;/span&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 style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;Services&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 28&lt;/span&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; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;asp&lt;/span&gt;&lt;span style="color: #efef8f"&gt;:&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;ServiceReference&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Path&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"~/Services/WebHttpService.svc"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;InlineScript&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"false"&lt;/span&gt; &lt;span style="color: #efef8f"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 29&lt;/span&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 style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;Services&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;asp&lt;/span&gt;&lt;span style="color: #efef8f"&gt;:&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;ScriptManager&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;asp&lt;/span&gt;&lt;span style="color: #efef8f"&gt;:&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;Label&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;ID&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"lblMessage"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;runat&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"server"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Text&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"No
work has been done"&lt;/span&gt; &lt;span style="color: #efef8f"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;a&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;href&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"javascript:void(0);
DoJeepWork()"&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;Do Work&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;a&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 33&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;div&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;form&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 35&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;body&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 36&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;html&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Mission accomplished! Here you've seen how to expose an existing WCF service library
without changing any code in the library itself. Adding two files allowed the service
to be exposed to your AJAX clients. Best of all, there is no configuration file changes
to make.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Useful Links:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/bb514961.aspx"&gt;Exposing WCF Services
to Client Script&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=cfeeb9f7-2a9e-40a5-99ce-dea714e3284d" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,cfeeb9f7-2a9e-40a5-99ce-dea714e3284d.aspx</comments>
      <category>.NET Framework</category>
      <category>AJAX</category>
      <category>ASP.NET</category>
      <category>C#</category>
      <category>Javascript</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=49e557e3-d9dd-4705-865f-71c4f468ed1b</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,49e557e3-d9dd-4705-865f-71c4f468ed1b.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,49e557e3-d9dd-4705-865f-71c4f468ed1b.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=49e557e3-d9dd-4705-865f-71c4f468ed1b</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hosting an MSMQ service is a little bit different than the other bindings. Since WCF
is using MSMQ as a transport mechanism, you must setup the queues, permissions, and
bindingConfigurations to allow this to happen. Surprisingly, MSDN has a <a href="http://msdn.microsoft.com/en-us/library/ms752246.aspx">good
sample article</a> that goes into sufficient detail on how to set this up for the
3.5 WF-WCF-CardSpace samples. 
</p>
        <p>
I have read in other articles that the AppPool must have an interactive identity and
that the queue names needed to match the name of the .svc file. I did not find this
to be the case. I was able to use the <em>NetworkService</em> account for my AppPool
after adding receive and peek permissions for <em>NetworkService</em> on my queue.
Communication between client and WAS worked fine with my service file named WasServices.svc
and my queue address as <a title="net.msmq://localhost/private/QueuedService1" href="net.msmq://localhost/private/QueuedService1">net.msmq://localhost/private/QueuedService1</a>.
</p>
        <p>
You can download my solution with the following link: <a href="http://scott.klueppel.net/content/binary/WasServices.zip">WasServices.zip</a> (78K)
</p>
        <p>
Additional Info:
</p>
        <ul>
          <li>
            <a href="http://msdn.microsoft.com/en-us/library/ms752246.aspx">MSMQ Activation (MSDN)</a>
          </li>
          <li>
            <a href="http://idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;tabid=11#WCFEssentials">IDesign
Code Library - Look for the WAS Hosting download</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=49e557e3-d9dd-4705-865f-71c4f468ed1b" />
      </body>
      <title>Hosting an MSMQ WCF Service in WAS</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,49e557e3-d9dd-4705-865f-71c4f468ed1b.aspx</guid>
      <link>http://offroadcoder.com/2008/09/17/HostingAnMSMQWCFServiceInWAS.aspx</link>
      <pubDate>Wed, 17 Sep 2008 01:48:22 GMT</pubDate>
      <description>&lt;p&gt;
Hosting an MSMQ service is a little bit different than the other bindings. Since WCF
is using MSMQ as a transport mechanism, you must setup the queues, permissions, and
bindingConfigurations to allow this to happen. Surprisingly, MSDN has a &lt;a href="http://msdn.microsoft.com/en-us/library/ms752246.aspx"&gt;good
sample article&lt;/a&gt; that goes into sufficient detail on how to set this up for the
3.5 WF-WCF-CardSpace samples. 
&lt;/p&gt;
&lt;p&gt;
I have read in other articles that the AppPool must have an interactive identity and
that the queue names needed to match the name of the .svc file. I did not find this
to be the case. I was able to use the &lt;em&gt;NetworkService&lt;/em&gt; account for my AppPool
after adding receive and peek permissions for &lt;em&gt;NetworkService&lt;/em&gt; on my queue.
Communication between client and WAS worked fine with my service file named WasServices.svc
and my queue address as &lt;a title="net.msmq://localhost/private/QueuedService1" href="net.msmq://localhost/private/QueuedService1"&gt;net.msmq://localhost/private/QueuedService1&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
You can download my solution with the following link: &lt;a href="http://scott.klueppel.net/content/binary/WasServices.zip"&gt;WasServices.zip&lt;/a&gt; (78K)
&lt;/p&gt;
&lt;p&gt;
Additional Info:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/ms752246.aspx"&gt;MSMQ Activation (MSDN)&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;amp;tabid=11#WCFEssentials"&gt;IDesign
Code Library - Look for the WAS Hosting download&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=49e557e3-d9dd-4705-865f-71c4f468ed1b" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,49e557e3-d9dd-4705-865f-71c4f468ed1b.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>WAS</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=a3e76678-c8fe-4440-898d-7739c8c99efb</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,a3e76678-c8fe-4440-898d-7739c8c99efb.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,a3e76678-c8fe-4440-898d-7739c8c99efb.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a3e76678-c8fe-4440-898d-7739c8c99efb</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It has taken me weeks to get WAS (Windows Activation Service) working. Finally, tonight,
my long hours of research has paid off. After everything I tried, it turned out to
be a general IIS7 issue caused by a stray http reservation that I probably entered
months ago during some testing. As I primarily use the built-in development server
for web development, I rarely crank up an IIS site on my development machine. 
</p>
        <p>
This post by Phil Haack helped me fix my IIS install:
</p>
        <p>
          <a href="http://haacked.com/archive/2007/05/21/the-iis-7-team-rocks.aspx">http://haacked.com/archive/2007/05/21/the-iis-7-team-rocks.aspx</a>
        </p>
        <p>
I have been cursing IIS7, Vista, and WAS for weeks. I should have been cursing my
own lack of IIS7 knowledge all along. Now that it's working, I am a big fan of WAS.
From the tone of recent forum responses and blog posts, very few people are using
WAS. Maybe it is due to Windows Server 2008 being so new. Not many people have Vista
workstations for development and <u>all</u> Windows Server 2008 servers to deploy
to. Knowing how many problems I had, I can only assume others are experiencing the
same thing. The only real info available right now is pre-release articles and MVP
posts about the new features with a sneak peak example on how to get it to work. Even
MSDN doesn't show how to use an existing WCF Service Library with WAS. They just walk
through a WsHttpBinding example as a new WCF web site served up by WAS.
</p>
        <p>
I'm posting the details so others will maybe see that it's really not that hard.
For this example I want to expose this service with the NetTcpBinding to prove that
it is not IIS hosting the service. I used the WCF Service Library project template
for my WCF service, and named the project <em>WasServices</em>. So the lame Service1
service is all I have in the library. I made no changes to the project and built it
in release mode to get the DLL. Some posts and articles out there say that the only
way to get WAS to work is to have an HTTP-based WCF web site. This is simply not true.
You just need to have an application set up in IIS.
</p>
        <p>
Here is the steps to success:
</p>
        <p>
1. Enable the required Windows Features to wake up IIS7 and WAS. You will find these
in the helpful links below.
</p>
        <p>
2. Configuration file <em>C:\Windows\System32\inetsrv\config\applicationHost.config</em> must
be modified to enable the required protocols on your web site and application. You
can modify the file yourself, or use command-line utilities.
</p>
        <blockquote>
          <p>
To enable net.tcp on the web site, if it is not already:
</p>
          <p>
            <font face="Courier New">%windir%\system32\inetsrv\appcmd.exe set site "Default Web
Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']</font>
          </p>
          <p>
To enable net.tcp on your application (my app is named <em>WasServices</em>) within
that web site, if it is not already:
</p>
          <p>
            <font face="Courier New">%windir%\system32\inetsrv\appcmd.exe set app "Default Web
Site/WasServices" /enabledProtocols:http,net.tcp</font>
          </p>
          <p>
          </p>
          <p>
Here is an exerpt from the applicationHost.config file showing the site and application
settings:
</p>
          <p>
          </p>
          <div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 848px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 218px">
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  151</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">site</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">Default
Web Site</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">id</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">1</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">serverAutoStart</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">true</span><span style="COLOR: #efef8f">"&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  152</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">application</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">path</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">/</span><span style="COLOR: #efef8f">"&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  153</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">virtualDirectory</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">path</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">/</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">physicalPath</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">%SystemDrive%\inetpub\wwwroot</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  154</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">application</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  155</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">application</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">path</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">/WasServices</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">applicationPool</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">WasHosting</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">enabledProtocols</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">http,net.tcp</span><span style="COLOR: #efef8f">"&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  156</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">virtualDirectory</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">path</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">/</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">physicalPath</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">C:\inetpub\wwwroot\WasServices</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  157</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">application</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  158</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">bindings</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  159</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">binding</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">protocol</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">net.tcp</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">bindingInformation</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">808:*</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  160</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">binding</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">protocol</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">net.pipe</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">bindingInformation</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">*</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  161</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">binding</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">protocol</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">net.msmq</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">bindingInformation</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">localhost</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  162</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">binding</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">protocol</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">msmq.formatname</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">bindingInformation</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">localhost</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  163</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">binding</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">protocol</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">http</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">bindingInformation</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">*:80:</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  164</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">bindings</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">  165</span> <span style="COLOR: #efef8f">           
&lt;/</span><span style="COLOR: #e3c66a">site</span><span style="COLOR: #efef8f">&gt;</span></p>
          </div>
        </blockquote>
        <p>
3. Prepare the application in your application folder (C:\inetpub\wwwroot\WasServices)
</p>
        <blockquote>
          <p>
Create a service file (WasServices.svc) that points to your existing WCF service library:
</p>
          <p>
          </p>
          <div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 600px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 34px">
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    1</span> <span style="BACKGROUND: #ffee62">&lt;%</span><span style="COLOR: #efef8f">@</span><span style="COLOR: #e3ceab">ServiceHost</span><span style="COLOR: #dfdfbf">Service</span><span style="COLOR: #efef8f">=</span><span style="COLOR: #cc9393">"WasServices.Service1"</span><span style="BACKGROUND: #ffee62">%&gt;</span></p>
          </div>
          <p>
 
</p>
          <p>
Create a web.config file that specifies the service's endpoints:
</p>
          <p>
          </p>
          <p>
          </p>
          <div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 600px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px">
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    1</span> <span style="COLOR: #efef8f">&lt;?</span><span style="COLOR: #e3c66a">xml</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">version</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">1.0</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">encoding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">utf-8</span><span style="COLOR: #efef8f">"?&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    2</span> <span style="COLOR: #efef8f">&lt;</span><span style="COLOR: #e3c66a">configuration</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    3</span> <span style="COLOR: #efef8f">   
&lt;</span><span style="COLOR: #e3c66a">system.serviceModel</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    4</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">services</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    5</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">service</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">WasServices.Service1</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    6</span> <span style="COLOR: #efef8f">                    </span><span style="COLOR: white">behaviorConfiguration</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">MEX</span><span style="COLOR: #efef8f">"&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    7</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">endpoint</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">address</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">wsHttp</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    8</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">binding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">wsHttpBinding</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    9</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">contract</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">WasServices.IService1</span><span style="COLOR: #efef8f">"/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   10</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">endpoint</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">address</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">netTcp</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   11</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">binding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">netTcpBinding</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   12</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">bindingConfiguration</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">NetTcpBinding_Common</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   13</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">contract</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">WasServices.IService1</span><span style="COLOR: #efef8f">"/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   14</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">endpoint</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">address</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">mex</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   15</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">binding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">mexHttpBinding</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   16</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">contract</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">IMetadataExchange</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   17</span> <span style="COLOR: #efef8f">           
&lt;/</span><span style="COLOR: #e3c66a">service</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   18</span> <span style="COLOR: #efef8f">       
&lt;/</span><span style="COLOR: #e3c66a">services</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   19</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">behaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   20</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">serviceBehaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   21</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">behavior</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">MEX</span><span style="COLOR: #efef8f">"&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   22</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">serviceMetadata</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">httpGetEnabled</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">true</span><span style="COLOR: #efef8f">"/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   23</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">behavior</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   24</span> <span style="COLOR: #efef8f">           
&lt;/</span><span style="COLOR: #e3c66a">serviceBehaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   25</span> <span style="COLOR: #efef8f">       
&lt;/</span><span style="COLOR: #e3c66a">behaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   26</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">bindings</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   27</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">netTcpBinding</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   28</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">binding</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">NetTcpBinding_Common</span><span style="COLOR: #efef8f">"&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   29</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">reliableSession</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">enabled</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">true</span><span style="COLOR: #efef8f">"/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   30</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">security</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">mode</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">None</span><span style="COLOR: #efef8f">"/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   31</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">binding</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   32</span> <span style="COLOR: #efef8f">           
&lt;/</span><span style="COLOR: #e3c66a">netTcpBinding</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   33</span> <span style="COLOR: #efef8f">       
&lt;/</span><span style="COLOR: #e3c66a">bindings</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   34</span> <span style="COLOR: #efef8f">   
&lt;/</span><span style="COLOR: #e3c66a">system.serviceModel</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   35</span> <span style="COLOR: #efef8f">&lt;/</span><span style="COLOR: #e3c66a">configuration</span><span style="COLOR: #efef8f">&gt;</span></p>
          </div>
          <p>
 
</p>
          <p>
Place the release-compiled DLL created from the WCF Service Library in a new folder
named <em>Bin</em>.
</p>
        </blockquote>
        <p>
4. At this point, you can browse and see the familiar "You have created a service."
page for Service1.
</p>
        <p>
5. Write your proxy file and config file.
</p>
        <blockquote>
          <p>
WAS and IIS7 decide the address for your service, and it is not intuitive. 
</p>
          <p>
          </p>
          <div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 691px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px">
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    1</span> <span style="COLOR: #efef8f">&lt;?</span><span style="COLOR: #e3c66a">xml</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">version</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">1.0</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">encoding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">utf-8</span><span style="COLOR: #efef8f">"
?&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    2</span> <span style="COLOR: #efef8f">&lt;</span><span style="COLOR: #e3c66a">configuration</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    3</span> <span style="COLOR: #efef8f">   
&lt;</span><span style="COLOR: #e3c66a">system.serviceModel</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    4</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">client</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    5</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">endpoint</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">address</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">net.tcp://localhost/WasServices/WasServices.svc/netTcp</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    6</span> <span style="COLOR: #efef8f">                      </span><span style="COLOR: white">binding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">netTcpBinding</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    7</span> <span style="COLOR: #efef8f">                      </span><span style="COLOR: white">bindingConfiguration</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">NetTcpBinding_IService1</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    8</span> <span style="COLOR: #efef8f">                      </span><span style="COLOR: white">contract</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">WasServices.IService1</span><span style="COLOR: #efef8f">"</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">    9</span> <span style="COLOR: #efef8f">                      </span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">NetTcpBinding_Common</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   10</span> <span style="COLOR: #efef8f">       
&lt;/</span><span style="COLOR: #e3c66a">client</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   11</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">bindings</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   12</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">netTcpBinding</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   13</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">binding</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">NetTcpBinding_Common</span><span style="COLOR: #efef8f">"&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   14</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">reliableSession</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">enabled</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">true</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   15</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">security</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">mode</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">None</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   16</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">binding</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   17</span> <span style="COLOR: #efef8f">           
&lt;/</span><span style="COLOR: #e3c66a">netTcpBinding</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   18</span> <span style="COLOR: #efef8f">       
&lt;/</span><span style="COLOR: #e3c66a">bindings</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   19</span> <span style="COLOR: #efef8f">   
&lt;/</span><span style="COLOR: #e3c66a">system.serviceModel</span><span style="COLOR: #efef8f">&gt;</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #85ac8d">   20</span> <span style="COLOR: #efef8f">&lt;/</span><span style="COLOR: #e3c66a">configuration</span><span style="COLOR: #efef8f">&gt;</span></p>
          </div>
          <p>
 
</p>
          <p>
The <em>/netTcp</em> at the end of the address is due to the address specified in
the service's web.config file. The address was given there as simply <em>netTcp</em>.
This is because IIS7 and WAS decide your address based on the available bindings and
ports you specified in the applicationHost.config file using appcmd.exe. Since my
enabled protocols are http and net.tcp and the only open tcp port is 808, you will
not see a port number in the address. The same would go for my wsHttpBinding since
the only allowable port is 80.
</p>
        </blockquote>
        <p>
I'm proud to be the fourth, and maybe final, member of the "Got WAS to work" club.
If anyone wants to join, and needs help to get in... please let me know.
</p>
        <blockquote>
          <p>
          </p>
        </blockquote>
        <p>
Here are some helpful links for those of you having problems:
</p>
        <ul>
          <li>
            <a href="http://yourbit.com/2008/03/09/hosting-a-windows-communication-foundation-service-in-iis7-on-windows-vista/">Hosting
a WCF Service using IIS7 and Windows Vista</a>
          </li>
          <li>
            <a href="http://blah.winsmarts.com/2008-4-Host_a_WCF_Service_in_IIS_7_-and-amp;_Windows_2008_-_The_right_way.aspx">Host
a WCF Service in IIS 7 &amp; Windows 2008 - The right way</a>
          </li>
          <li>
            <a href="http://www.devx.com/VistaSpecialReport/Article/33831">Hosting WCF Services
in Windows Activation Service</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=a3e76678-c8fe-4440-898d-7739c8c99efb" />
      </body>
      <title>WASed up and ready to go</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,a3e76678-c8fe-4440-898d-7739c8c99efb.aspx</guid>
      <link>http://offroadcoder.com/2008/09/13/WASedUpAndReadyToGo.aspx</link>
      <pubDate>Sat, 13 Sep 2008 04:58:31 GMT</pubDate>
      <description>&lt;p&gt;
It has taken me weeks to get WAS (Windows Activation Service) working. Finally, tonight,
my long hours of research has paid off. After everything I tried, it turned out to
be a general IIS7 issue caused by a stray http reservation that I probably entered
months ago during some testing. As I primarily use the built-in development server
for web development, I rarely crank up an IIS site on my development machine. 
&lt;/p&gt;
&lt;p&gt;
This post by Phil Haack helped me fix my IIS install:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://haacked.com/archive/2007/05/21/the-iis-7-team-rocks.aspx"&gt;http://haacked.com/archive/2007/05/21/the-iis-7-team-rocks.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I have been cursing IIS7, Vista, and WAS for weeks. I should have been cursing my
own lack of IIS7 knowledge all along. Now that it's working, I am a big fan of WAS.
From the tone of recent forum responses and blog posts, very few people are using
WAS. Maybe it is due to Windows Server 2008 being so new. Not many people have Vista
workstations for development and &lt;u&gt;all&lt;/u&gt; Windows Server 2008 servers to deploy
to. Knowing how many problems I had, I can only assume others are experiencing the
same thing. The only real info available right now is pre-release articles and MVP
posts about the new features with a sneak peak example on how to get it to work. Even
MSDN doesn't show how to use an existing WCF Service Library with WAS. They just walk
through a WsHttpBinding example as a new WCF web site served up by WAS.
&lt;/p&gt;
&lt;p&gt;
I'm posting the details so&amp;nbsp;others will maybe see that it's really not that hard.
For this example I want to expose this service with the NetTcpBinding to prove that
it is not IIS hosting the service. I used the WCF Service Library project template
for my WCF service, and named the project &lt;em&gt;WasServices&lt;/em&gt;. So the lame Service1
service is all I have in the library. I made no changes to the project and built it
in release mode to get the DLL. Some posts and articles out there say that the only
way to get WAS to work is to have an HTTP-based WCF web site. This is simply not true.
You just need to have an application set up in IIS.
&lt;/p&gt;
&lt;p&gt;
Here is the steps to success:
&lt;/p&gt;
&lt;p&gt;
1. Enable the required Windows Features to wake up IIS7 and WAS. You will find these
in the helpful links below.
&lt;/p&gt;
&lt;p&gt;
2. Configuration file &lt;em&gt;C:\Windows\System32\inetsrv\config\applicationHost.config&lt;/em&gt; must
be modified to enable the required protocols on your web site and application. You
can modify the file yourself, or use command-line utilities.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
To enable net.tcp on the web site, if it is not already:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;%windir%\system32\inetsrv\appcmd.exe set site "Default Web
Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
To enable net.tcp on your application (my app is named &lt;em&gt;WasServices&lt;/em&gt;) within
that web site, if it is not already:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;%windir%\system32\inetsrv\appcmd.exe set app "Default Web
Site/WasServices" /enabledProtocols:http,net.tcp&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Here is an exerpt from the applicationHost.config file showing the site and application
settings:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 848px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 218px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 151&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;site&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;Default
Web Site&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;id&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;1&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;serverAutoStart&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;true&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 152&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;application&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;path&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;/&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 153&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;virtualDirectory&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;path&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;/&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;physicalPath&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;%SystemDrive%\inetpub\wwwroot&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 154&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;application&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 155&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;application&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;path&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;/WasServices&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;applicationPool&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;WasHosting&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;enabledProtocols&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;http,net.tcp&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 156&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;virtualDirectory&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;path&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;/&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;physicalPath&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;C:\inetpub\wwwroot\WasServices&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 157&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;application&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 158&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 159&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;protocol&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;net.tcp&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;bindingInformation&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;808:*&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 160&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;protocol&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;net.pipe&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;bindingInformation&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;*&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 161&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;protocol&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;net.msmq&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;bindingInformation&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;localhost&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 162&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;protocol&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;msmq.formatname&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;bindingInformation&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;localhost&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 163&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;protocol&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;http&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;bindingInformation&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;*:80:&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 164&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp; 165&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;site&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
3. Prepare the application in your application folder (C:\inetpub\wwwroot\WasServices)
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Create a service file (WasServices.svc) that points to your existing WCF service library:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 600px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 34px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;@&lt;/span&gt; &lt;span style="COLOR: #e3ceab"&gt;ServiceHost&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;Service&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;=&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;"WasServices.Service1"&lt;/span&gt; &lt;span style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Create a web.config file that specifies the service's endpoints:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 600px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;xml&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;version&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;1.0&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;encoding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;utf-8&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"?&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;services&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;service&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;WasServices.Service1&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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; &lt;/span&gt;&lt;span style="COLOR: white"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;MEX&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;address&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;wsHttp&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;wsHttpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;contract&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;WasServices.IService1&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 10&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;address&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;netTcp&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 11&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;netTcpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 12&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;NetTcpBinding_Common&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 13&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;contract&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;WasServices.IService1&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 14&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;address&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;mex&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 15&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;mexHttpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 16&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;contract&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;IMetadataExchange&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 17&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;service&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 18&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;services&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 19&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 20&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 21&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;MEX&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 22&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;serviceMetadata&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;httpGetEnabled&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;true&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 23&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 24&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 26&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 27&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;netTcpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 28&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;NetTcpBinding_Common&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 29&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;reliableSession&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;enabled&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;true&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 30&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;security&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;mode&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;None&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 31&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 32&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;netTcpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 33&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 34&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 35&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Place the release-compiled DLL created from the WCF Service Library in a new folder
named &lt;em&gt;Bin&lt;/em&gt;.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
4. At this point, you can browse and see the familiar "You have created a service."
page for Service1.
&lt;/p&gt;
&lt;p&gt;
5. Write your proxy file and config file.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
WAS and IIS7 decide the address for your service, and it is not intuitive. 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 691px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;xml&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;version&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;1.0&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;encoding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;utf-8&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
?&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;client&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;address&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;net.tcp://localhost/WasServices/WasServices.svc/netTcp&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;netTcpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;NetTcpBinding_IService1&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;contract&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;WasServices.IService1&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;NetTcpBinding_Common&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 10&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;client&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 11&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 12&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;netTcpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 13&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;NetTcpBinding_Common&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 14&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;reliableSession&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;enabled&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;true&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 15&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;security&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;mode&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;None&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 16&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 17&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;netTcpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 18&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 19&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 20&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
The &lt;em&gt;/netTcp&lt;/em&gt; at the end of the address is due to the address specified in
the service's web.config file. The address was given there as simply &lt;em&gt;netTcp&lt;/em&gt;.
This is because IIS7 and WAS decide your address based on the available bindings and
ports you specified in the applicationHost.config file using appcmd.exe. Since my
enabled protocols are http and net.tcp and the only open tcp port is 808, you will
not see a port number in the address. The same would go for my wsHttpBinding since
the only allowable port is 80.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I'm proud to be the fourth, and maybe final, member of the "Got WAS to work" club.
If anyone wants to join, and needs help to get in... please let me know.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Here are some helpful links for those of you having problems:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://yourbit.com/2008/03/09/hosting-a-windows-communication-foundation-service-in-iis7-on-windows-vista/"&gt;Hosting
a WCF Service using IIS7 and Windows Vista&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://blah.winsmarts.com/2008-4-Host_a_WCF_Service_in_IIS_7_-and-amp;_Windows_2008_-_The_right_way.aspx"&gt;Host
a WCF Service in IIS 7 &amp;amp; Windows 2008 - The right way&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://www.devx.com/VistaSpecialReport/Article/33831"&gt;Hosting WCF Services
in Windows Activation Service&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=a3e76678-c8fe-4440-898d-7739c8c99efb" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,a3e76678-c8fe-4440-898d-7739c8c99efb.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>WAS</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=81c4ce95-c3f1-4bda-97cf-f344afba5a2d</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,81c4ce95-c3f1-4bda-97cf-f344afba5a2d.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,81c4ce95-c3f1-4bda-97cf-f344afba5a2d.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=81c4ce95-c3f1-4bda-97cf-f344afba5a2d</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Why clutter your inbox with error messages? Why make special code provisions for users
to receive error messages via email? Why not log your error messages and have users
subscribe to receive them in their favorite RSS aggregator?
</p>
        <p>
If you are logging your exceptions already, you may find it easier to provide a syndication
service. The process is ridiculously simple, and starts by creating a new project
using the "Syndication Service Library" template. This template creates everything
for you. All you need to do now is fill the <em>SyndicationFeed</em> with <em>SyndicationItem</em> objects.
</p>
        <p>
Add a new class file called Feeds.cs: 
</p>
        <p>
 
</p>
        <div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 873px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px">
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    1</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    2</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>.<span style="COLOR: #dfdfbf">Linq</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    3</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>.<span style="COLOR: #dfdfbf">ServiceModel</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    4</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>.<span style="COLOR: #dfdfbf">ServiceModel</span>.<span style="COLOR: #dfdfbf">Syndication</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    5</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>.<span style="COLOR: #dfdfbf">ServiceModel</span>.<span style="COLOR: #dfdfbf">Web</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    6</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    7</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">namespace</span><span style="COLOR: #dfdfbf">SyndicationService</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    8</span> {</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    9</span>    
[<span style="COLOR: #2b91af">ServiceContract</span>]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   10</span>    
[<span style="COLOR: #2b91af">ServiceKnownType</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">typeof</span>(<span style="COLOR: #2b91af">Atom10FeedFormatter</span>))]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   11</span>    
[<span style="COLOR: #2b91af">ServiceKnownType</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">typeof</span>(<span style="COLOR: #2b91af">Rss20FeedFormatter</span>))]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   12</span>     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">public</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">interface</span><span style="COLOR: #2b91af">IFeeds</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   13</span>    
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   14</span>        
[<span style="COLOR: #2b91af">OperationContract</span>]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   15</span>        
[<span style="COLOR: #2b91af">WebGet</span>(<span style="COLOR: #dfdfbf">UriTemplate</span> = <span style="COLOR: #c89191">"{type}?env={env}&amp;app={app}"</span>, <span style="COLOR: #dfdfbf">BodyStyle</span> = <span style="COLOR: #2b91af">WebMessageBodyStyle</span>.<span style="COLOR: #dfdfbf">Bare</span>)]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   16</span>         <span style="COLOR: #2b91af">SyndicationFeedFormatter</span><span style="COLOR: #dfdfbf">CreateFeed</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">type</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">env</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">app</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   17</span>    
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   18</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   19</span>     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">public</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">class</span><span style="COLOR: #2b91af">Feeds</span> : <span style="COLOR: #2b91af">IFeeds</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   20</span>    
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   21</span>         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">public</span><span style="COLOR: #2b91af">SyndicationFeedFormatter</span><span style="COLOR: #dfdfbf">CreateFeed</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">type</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">env</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">app</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   22</span>        
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   23</span>             <span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">feed</span> = <span style="COLOR: #dfdfbf">CreateSyndicationFeed</span>(<span style="COLOR: #dfdfbf">type</span>, <span style="COLOR: #dfdfbf">env</span>, <span style="COLOR: #dfdfbf">app</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   24</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   25</span>             <span style="COLOR: #7f9f7f">//
Return ATOM or RSS based on query string</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   26</span>             <span style="COLOR: #7f9f7f">//
rss -&gt; http://localhost:8000/Feeds/Errors?env=Production&amp;app=MyAppName</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   27</span>             <span style="COLOR: #7f9f7f">//
atom -&gt; http://localhost:8000/Feeds/Errors?env=Production&amp;app=MyAppName&amp;format=atom</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   28</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">query</span> = <span style="COLOR: #2b91af">WebOperationContext</span>.<span style="COLOR: #dfdfbf">Current</span>.<span style="COLOR: #dfdfbf">IncomingRequest</span>.<span style="COLOR: #dfdfbf">UriTemplateMatch</span>.<span style="COLOR: #dfdfbf">QueryParameters</span>[<span style="COLOR: #c89191">"format"</span>];</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   29</span>             <span style="COLOR: #2b91af">SyndicationFeedFormatter</span><span style="COLOR: #dfdfbf">formatter</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">null</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   30</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">if</span> (<span style="COLOR: #dfdfbf">query</span> == <span style="COLOR: #c89191">"atom"</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   31</span>            
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   32</span>                 <span style="COLOR: #dfdfbf">formatter</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">Atom10FeedFormatter</span>(<span style="COLOR: #dfdfbf">feed</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   33</span>            
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   34</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">else</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   35</span>            
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   36</span>                 <span style="COLOR: #dfdfbf">formatter</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">Rss20FeedFormatter</span>(<span style="COLOR: #dfdfbf">feed</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   37</span>            
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   38</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   39</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span><span style="COLOR: #dfdfbf">formatter</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   40</span>        
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   41</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   42</span>         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">private</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">static</span><span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">CreateSyndicationFeed</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">type</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">env</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">app</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   43</span>        
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   44</span>             <span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">feed</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   45</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">switch</span> (<span style="COLOR: #dfdfbf">type</span>.<span style="COLOR: #dfdfbf">ToLower</span>())</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   46</span>            
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   47</span>                 <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">case</span><span style="COLOR: #c89191">"errors"</span>:</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   48</span>                     <span style="COLOR: #dfdfbf">feed</span> = <span style="COLOR: #dfdfbf">CreateErrorsFeed</span>(<span style="COLOR: #dfdfbf">type</span>, <span style="COLOR: #dfdfbf">env</span>, <span style="COLOR: #dfdfbf">app</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   49</span>                     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">break</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   50</span>                 <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">default</span>:</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   51</span>                     <span style="COLOR: #dfdfbf">feed</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">SyndicationFeed</span>(</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   52</span>                         <span style="COLOR: #2b91af">String</span>.<span style="COLOR: #dfdfbf">Format</span>(<span style="COLOR: #c89191">"Feed
is unavailable - Type: {0} / Environment: {1} / Application: {2}"</span>,</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   53</span>                         <span style="COLOR: #dfdfbf">type</span>, <span style="COLOR: #dfdfbf">env</span>, <span style="COLOR: #dfdfbf">app</span>), <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">null</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">null</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   54</span>                     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">break</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   55</span>            
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   56</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span><span style="COLOR: #dfdfbf">feed</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   57</span>        
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   58</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   59</span>         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">private</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">static</span><span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">CreateErrorsFeed</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">type</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">env</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">app</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   60</span>        
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   61</span>             <span style="COLOR: #2b91af">ApplicationLogDataContext</span><span style="COLOR: #dfdfbf">db</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">ApplicationLogDataContext</span>();</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   62</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   63</span>             <span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">feed</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">SyndicationFeed</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   64</span>            
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   65</span>                 <span style="COLOR: #dfdfbf">Title</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">TextSyndicationContent</span>(<span style="COLOR: #2b91af">String</span>.<span style="COLOR: #dfdfbf">Format</span>(<span style="COLOR: #c89191">"{0}
{1} {2}"</span>, <span style="COLOR: #dfdfbf">env</span>, <span style="COLOR: #dfdfbf">app</span>, <span style="COLOR: #dfdfbf">type</span>)),</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   66</span>                 <span style="COLOR: #dfdfbf">Description</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">TextSyndicationContent</span>(</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   67</span>                     <span style="COLOR: #2b91af">String</span>.<span style="COLOR: #dfdfbf">Format</span>(<span style="COLOR: #c89191">"Application
error syndication for the {0} applicaiton ({1})."</span>, <span style="COLOR: #dfdfbf">app</span>, <span style="COLOR: #dfdfbf">env</span>)),</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   68</span>                 <span style="COLOR: #dfdfbf">Items</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">from</span><span style="COLOR: #dfdfbf">e</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">in</span><span style="COLOR: #dfdfbf">db</span>.<span style="COLOR: #dfdfbf">Exceptions</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   69</span>                         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">where</span><span style="COLOR: #dfdfbf">e</span>.<span style="COLOR: #dfdfbf">Environment</span> == <span style="COLOR: #dfdfbf">env</span> &amp;&amp; <span style="COLOR: #dfdfbf">e</span>.<span style="COLOR: #dfdfbf">Application</span> == <span style="COLOR: #dfdfbf">app</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   70</span>                         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">select</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">SyndicationItem</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   71</span>                        
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   72</span>                             <span style="COLOR: #dfdfbf">Title</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">TextSyndicationContent</span>(<span style="COLOR: #dfdfbf">e</span>.<span style="COLOR: #dfdfbf">Message</span>),</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   73</span>                             <span style="COLOR: #dfdfbf">Content</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">TextSyndicationContent</span>(<span style="COLOR: #dfdfbf">e</span>.<span style="COLOR: #dfdfbf">StackTrace</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   74</span>                        
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   75</span>            
};</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   76</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span><span style="COLOR: #dfdfbf">feed</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   77</span>        
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   78</span>    
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   79</span> }</strong>
          </p>
        </div>
        <p>
        </p>
        <p>
Modify the App.config file: 
</p>
        <p>
 
</p>
        <div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 876px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px">
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    1</span> <span style="COLOR: #efef8f">&lt;?</span><span style="COLOR: #e3c66a">xml</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">version</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">1.0</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">encoding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">utf-8</span><span style="COLOR: #efef8f">"
?&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    2</span> <span style="COLOR: #efef8f">&lt;</span><span style="COLOR: #e3c66a">configuration</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    3</span> <span style="COLOR: #efef8f">   
&lt;</span><span style="COLOR: #e3c66a">configSections</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    4</span> <span style="COLOR: #efef8f">   
&lt;/</span><span style="COLOR: #e3c66a">configSections</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    5</span> <span style="COLOR: #efef8f">   
&lt;</span><span style="COLOR: #e3c66a">connectionStrings</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    6</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">add</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">SyndicationService.Properties.Settings.ApplicationLogConnectionString</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    7</span> <span style="COLOR: #efef8f">            </span><span style="COLOR: white">connectionString</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">Data
Source=Scorpion;Initial Catalog=ApplicationLog;Integrated Security=True</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    8</span> <span style="COLOR: #efef8f">            </span><span style="COLOR: white">providerName</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">System.Data.SqlClient</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    9</span> <span style="COLOR: #efef8f">   
&lt;/</span><span style="COLOR: #e3c66a">connectionStrings</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   10</span> <span style="COLOR: #efef8f">   
&lt;</span><span style="COLOR: #e3c66a">system.serviceModel</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   11</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">services</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   12</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">service</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">SyndicationService.Feeds</span><span style="COLOR: #efef8f">"&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   13</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">host</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   14</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">baseAddresses</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   15</span> <span style="COLOR: #efef8f">                       
&lt;</span><span style="COLOR: #e3c66a">add</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">baseAddress</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">http://localhost:8000/</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   16</span> <span style="COLOR: #efef8f">                   
&lt;/</span><span style="COLOR: #e3c66a">baseAddresses</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   17</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">host</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   18</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">endpoint</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">contract</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">SyndicationService.IFeeds</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   19</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">address</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">Feeds</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   20</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">binding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">webHttpBinding</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   21</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">behaviorConfiguration</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">WebHttpBinding_Common</span><span style="COLOR: #efef8f">"/&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   22</span> <span style="COLOR: #efef8f">           
&lt;/</span><span style="COLOR: #e3c66a">service</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   23</span> <span style="COLOR: #efef8f">       
&lt;/</span><span style="COLOR: #e3c66a">services</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   24</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">behaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   25</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">endpointBehaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   26</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">behavior</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">WebHttpBinding_Common</span><span style="COLOR: #efef8f">"&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   27</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">webHttp</span><span style="COLOR: #efef8f">/&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   28</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">behavior</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   29</span> <span style="COLOR: #efef8f">           
&lt;/</span><span style="COLOR: #e3c66a">endpointBehaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   30</span> <span style="COLOR: #efef8f">       
&lt;/</span><span style="COLOR: #e3c66a">behaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   31</span> <span style="COLOR: #efef8f">   
&lt;/</span><span style="COLOR: #e3c66a">system.serviceModel</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   32</span> <span style="COLOR: #efef8f">&lt;/</span><span style="COLOR: #e3c66a">configuration</span><span style="COLOR: #efef8f">&gt;</span></p>
        </div>
        <p>
        </p>
        <p>
You will need to adjust your project's Debug options to have command arguments that
look similar to the following to F5-debug your service.
</p>
        <blockquote>
          <p>
            <strong>"/client:iexplore.exe" "/clientArgs:http://localhost:8000/Feeds/Errors?env=Production&amp;app=GeoTracker"</strong>
          </p>
        </blockquote>
        <p>
Press F5 to test it out.
</p>
        <p>
Here is the IE7 RSS viewer:
</p>
        <p>
          <a href="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/IE7_RSS_Viewer.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="425" alt="IE7_RSS_Viewer" src="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/IE7_RSS_Viewer_thumb.png" width="602" border="0" />
          </a>
        </p>
        <p>
Here is your RSS aggregator viewing the same feed:
</p>
        <p>
          <a href="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/RSS_Aggregator.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="387" alt="RSS_Aggregator" src="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/RSS_Aggregator_thumb.png" width="602" border="0" />
          </a>
        </p>
        <p>
You will, of course, want to add some additional information to the content of your <em>SyndidationItem</em>,
a bogus phrase works for this example. 
</p>
        <p>
Also, it is unusual that you would care to keep your exception details around for
a long period of time. Since this is a syndicated feed of application errors, you
should make special arrangements to archive or delete your exception log on a regular
basis. This will not only keep your insert and select times low, but will also alleviate
the burden placed on a new subscriber when all of the exceptions from the database
appear at once. An alternative would also be to modify the LINQ in the code above
to only bring back exceptions from the last 7-60 days depending on your counts. I
already archive my exceptions to a master exception repository for all environments
by way of an ETL job. This way I can report on my errors without disturbing the live
environments too.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=81c4ce95-c3f1-4bda-97cf-f344afba5a2d" />
      </body>
      <title>Error Log RSS Feed</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,81c4ce95-c3f1-4bda-97cf-f344afba5a2d.aspx</guid>
      <link>http://offroadcoder.com/2008/08/31/ErrorLogRSSFeed.aspx</link>
      <pubDate>Sun, 31 Aug 2008 08:37:38 GMT</pubDate>
      <description>&lt;p&gt;
Why clutter your inbox with error messages? Why make special code provisions for users
to receive error messages via email? Why not log your error messages and have users
subscribe to receive them in their favorite RSS aggregator?
&lt;/p&gt;
&lt;p&gt;
If you are logging your exceptions already, you may find it easier to provide a syndication
service. The process is ridiculously simple, and starts by creating a new project
using the "Syndication Service Library" template. This template creates everything
for you. All you need to do now is fill the &lt;em&gt;SyndicationFeed&lt;/em&gt; with &lt;em&gt;SyndicationItem&lt;/em&gt; objects.
&lt;/p&gt;
&lt;p&gt;
Add a new class file called Feeds.cs: 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 873px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Linq&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ServiceModel&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ServiceModel&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Syndication&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ServiceModel&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Web&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;namespace&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;SyndicationService&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/span&gt; {&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;ServiceContract&lt;/span&gt;]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;ServiceKnownType&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;Atom10FeedFormatter&lt;/span&gt;))]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;ServiceKnownType&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;Rss20FeedFormatter&lt;/span&gt;))]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IFeeds&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;OperationContract&lt;/span&gt;]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;WebGet&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;UriTemplate&lt;/span&gt; = &lt;span style="COLOR: #c89191"&gt;"{type}?env={env}&amp;amp;app={app}"&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;BodyStyle&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;WebMessageBodyStyle&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Bare&lt;/span&gt;)]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeedFormatter&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;CreateFeed&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 18&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Feeds&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IFeeds&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeedFormatter&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;CreateFeed&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 23&lt;/span&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 style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt; = &lt;span style="COLOR: #dfdfbf"&gt;CreateSyndicationFeed&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 24&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&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 style="COLOR: #7f9f7f"&gt;//
Return ATOM or RSS based on query string&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 26&lt;/span&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 style="COLOR: #7f9f7f"&gt;//
rss -&amp;gt; http://localhost:8000/Feeds/Errors?env=Production&amp;amp;app=MyAppName&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 27&lt;/span&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 style="COLOR: #7f9f7f"&gt;//
atom -&amp;gt; http://localhost:8000/Feeds/Errors?env=Production&amp;amp;app=MyAppName&amp;amp;format=atom&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 28&lt;/span&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 style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;query&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;WebOperationContext&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Current&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;IncomingRequest&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;UriTemplateMatch&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;QueryParameters&lt;/span&gt;[&lt;span style="COLOR: #c89191"&gt;"format"&lt;/span&gt;];&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 29&lt;/span&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 style="COLOR: #2b91af"&gt;SyndicationFeedFormatter&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;formatter&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;null&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 30&lt;/span&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 style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #dfdfbf"&gt;query&lt;/span&gt; == &lt;span style="COLOR: #c89191"&gt;"atom"&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 31&lt;/span&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;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 32&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;formatter&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Atom10FeedFormatter&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 33&lt;/span&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;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 34&lt;/span&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 style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;else&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 35&lt;/span&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;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 36&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;formatter&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Rss20FeedFormatter&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 37&lt;/span&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;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 38&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 39&lt;/span&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 style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;formatter&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 41&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;private&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;static&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;CreateSyndicationFeed&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 44&lt;/span&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 style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 45&lt;/span&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 style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;switch&lt;/span&gt; (&lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ToLower&lt;/span&gt;())&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 46&lt;/span&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;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 47&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;case&lt;/span&gt; &lt;span style="COLOR: #c89191"&gt;"errors"&lt;/span&gt;:&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 48&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt; = &lt;span style="COLOR: #dfdfbf"&gt;CreateErrorsFeed&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 49&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;break&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 50&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;default&lt;/span&gt;:&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 51&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt;(&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 52&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Format&lt;/span&gt;(&lt;span style="COLOR: #c89191"&gt;"Feed
is unavailable - Type: {0} / Environment: {1} / Application: {2}"&lt;/span&gt;,&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 53&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;), &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;null&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;null&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 54&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;break&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 55&lt;/span&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;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 56&lt;/span&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 style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 57&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 58&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;private&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;static&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;CreateErrorsFeed&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 61&lt;/span&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 style="COLOR: #2b91af"&gt;ApplicationLogDataContext&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;db&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ApplicationLogDataContext&lt;/span&gt;();&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 62&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 63&lt;/span&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 style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 64&lt;/span&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;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 65&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;Title&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Format&lt;/span&gt;(&lt;span style="COLOR: #c89191"&gt;"{0}
{1} {2}"&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;)),&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 66&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;Description&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 67&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Format&lt;/span&gt;(&lt;span style="COLOR: #c89191"&gt;"Application
error syndication for the {0} applicaiton ({1})."&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;)),&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 68&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;Items&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;from&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;in&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;db&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Exceptions&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 69&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;where&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Environment&lt;/span&gt; == &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Application&lt;/span&gt; == &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 70&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;select&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationItem&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 71&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 72&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: #dfdfbf"&gt;Title&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Message&lt;/span&gt;),&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 73&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: #dfdfbf"&gt;Content&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;StackTrace&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 74&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 75&lt;/span&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;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 76&lt;/span&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 style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 77&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 78&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 79&lt;/span&gt; }&lt;/strong&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Modify the App.config file: 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 876px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;xml&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;version&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;1.0&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;encoding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;utf-8&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
?&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configSections&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configSections&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;connectionStrings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;add&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;SyndicationService.Properties.Settings.ApplicationLogConnectionString&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;connectionString&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;Data
Source=Scorpion;Initial Catalog=ApplicationLog;Integrated Security=True&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;providerName&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;System.Data.SqlClient&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;connectionStrings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 10&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 11&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;services&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 12&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;service&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;SyndicationService.Feeds&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 13&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;host&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 14&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 15&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;add&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;baseAddress&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;http://localhost:8000/&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 16&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 17&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;host&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 18&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;contract&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;SyndicationService.IFeeds&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 19&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;address&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;Feeds&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 20&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;webHttpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 21&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;WebHttpBinding_Common&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 22&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;service&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 23&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;services&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 24&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;endpointBehaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 26&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;WebHttpBinding_Common&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 27&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;webHttp&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 28&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 29&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&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&gt;&lt;span style="COLOR: #e3c66a"&gt;endpointBehaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 30&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 31&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 32&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
You will need to adjust your project's Debug options to have command arguments that
look similar to the following to F5-debug your service.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;"/client:iexplore.exe" "/clientArgs:http://localhost:8000/Feeds/Errors?env=Production&amp;amp;app=GeoTracker"&lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Press F5 to test it out.
&lt;/p&gt;
&lt;p&gt;
Here is the IE7 RSS viewer:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/IE7_RSS_Viewer.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=425 alt=IE7_RSS_Viewer src="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/IE7_RSS_Viewer_thumb.png" width=602 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Here is your RSS aggregator viewing the same feed:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/RSS_Aggregator.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=387 alt=RSS_Aggregator src="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/RSS_Aggregator_thumb.png" width=602 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
You will, of course, want to add some additional information to the content of your &lt;em&gt;SyndidationItem&lt;/em&gt;,
a bogus phrase works for this example. 
&lt;/p&gt;
&lt;p&gt;
Also, it is unusual that you would care to keep your exception details around for
a long period of time. Since this is a syndicated feed of application errors, you
should make special arrangements to archive or delete your exception log on a regular
basis. This will not only keep your insert and select times low, but will also alleviate
the burden placed on a new subscriber when all of the exceptions from the database
appear at once. An alternative would also be to modify the LINQ in the code above
to only bring back exceptions from the last 7-60 days depending on your counts. I
already archive my exceptions to a master exception repository for all environments
by way of an ETL job. This way I can report on my errors without disturbing the live
environments too.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=81c4ce95-c3f1-4bda-97cf-f344afba5a2d" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,81c4ce95-c3f1-4bda-97cf-f344afba5a2d.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>LINQ</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=01df2e81-97da-4179-a4b0-a7c6178f5599</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,01df2e81-97da-4179-a4b0-a7c6178f5599.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,01df2e81-97da-4179-a4b0-a7c6178f5599.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=01df2e81-97da-4179-a4b0-a7c6178f5599</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Our friends at Microsoft may have slipped one in on us. After installing the 3.5 Framework
Service Pack 1, it appears that you no longer need the [DataContract] or [DataMember]
attributes on your DataContracts and DataMembers. I'm not sure what the motivation
was for this "enhancement", but it caused some trouble for me the other day.
</p>
        <p>
For this example I will be using the base project VS2008 gives you when you create
a new WCF Service Library. I am simply adding a NestedType to the CompositeType given
in the base project.
</p>
        <p>
Before installing SP1, having code as it appears below would cause an error during
Metadata Exchange that reads something like "Metadata contains a reference that cannot
be resolved". Notice that <em>CompositeType</em>'s <em>NestedObject</em> is marked
as [DataMember] and also notice that the NestedType class is not marked as [DataContract]
and has no [DataMember] attributes. Adding [DataContract] on <em>NestedType</em> and
[DataMember] on <em>IsVisible</em> will clear this error and everything will work
as expected.  
</p>
        <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red220\green220\blue204;\red63\green63\blue63;\red43\green145\blue175;\red225\green225\blue138;\red223\green223\blue191;\red200\green145\blue145;}??\fs18 \cf1\cb2\highlight2 \tab [\cf3 DataContract\cf1 ]\par ??\tab \cf4 {\b public}\cf1  \cf4 {\b class}\cf1  \cf3 CompositeType\par ??\cf1 \tab \{\par ??\tab \tab \cf4 {\b bool}\cf1  \cf5 boolValue\cf1  = \cf4 {\b true}\cf1 ;\par ??\tab \tab \cf4 {\b string}\cf1  \cf5 stringValue\cf1  = \cf6 "Hello "\cf1 ;\par ??\tab \tab \cf3 NestedType\cf1  \cf5 nestedObject\cf1  = \cf4 {\b new}\cf1  \cf3 NestedType\cf1 ();\par ??\par ??\tab \tab [\cf3 DataMember\cf1 ]\par ??\tab \tab \cf4 {\b public}\cf1  \cf4 {\b bool}\cf1  \cf5 BoolValue\par ??\cf1 \tab \tab \{\par ??\tab \tab \tab \cf4 {\b get}\cf1  \{ \cf4 {\b return}\cf1  \cf5 boolValue\cf1 ; \}\par ??\tab \tab \tab \cf4 {\b set}\cf1  \{ \cf5 boolValue\cf1  = \cf4 {\b value}\cf1 ; \}\par ??\tab \tab \}\par ??\par ??\tab \tab [\cf3 DataMember\cf1 ]\par ??\tab \tab \cf4 {\b public}\cf1  \cf4 {\b string}\cf1  \cf5 StringValue\par ??\cf1 \tab \tab \{\par ??\tab \tab \tab \cf4 {\b get}\cf1  \{ \cf4 {\b return}\cf1  \cf5 stringValue\cf1 ; \}\par ??\tab \tab \tab \cf4 {\b set}\cf1  \{ \cf5 stringValue\cf1  = \cf4 {\b value}\cf1 ; \}\par ??\tab \tab \}\par ??\par ??\tab \tab [\cf3 DataMember\cf1 ]\par ??\tab \tab \cf4 {\b public}\cf1  \cf3 NestedType\cf1  \cf5 NestedObject\par ??\cf1 \tab \tab \{\par ??\tab \tab \tab \cf4 {\b get}\cf1  \{ \cf4 {\b return}\cf1  \cf5 nestedObject\cf1 ; \}\par ??\tab \tab \tab \cf4 {\b set}\cf1  \{ \cf5 nestedObject\cf1  = \cf4 {\b value}\cf1 ; \}\par ??\tab \tab \}\par ??\tab \}\par ??\par ??\tab \cf4 {\b public}\cf1  \cf4 {\b class}\cf1  \cf3 NestedType\par ??\cf1 \tab \{\par ??\tab \tab \cf4 {\b bool}\cf1  \cf5 isVisible\cf1  = \cf4 {\b false}\cf1 ;\par ??\par ??\tab \tab \cf4 {\b public}\cf1  \cf4 {\b bool}\cf1  \cf5 IsVisible\par ??\cf1 \tab \tab \{\par ??\tab \tab \tab \cf4 {\b get}\cf1  \{ \cf4 {\b return}\cf1  \cf5 isVisible\cf1 ; \}\par ??\tab \tab \tab \cf4 {\b set}\cf1  \{ \cf5 isVisible\cf1  = \cf4 {\b value}\cf1 ; \}\par ??\tab \tab \}\par ??\tab \}}
-->
        <div style="overflow-y: scroll; font-size: 9pt; background: #3f3f3f; width: 600px; color: #dcdccc; font-family: consolas; height: 200px">
          <p style="margin: 0px">
            <span style="color: #85ac8d">   24</span>     [<span style="color: #2b91af">DataContract</span>]
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   25</span>     <span style="font-weight: bold; color: #e1e18a">public</span><span style="font-weight: bold; color: #e1e18a">class</span><span style="color: #2b91af">CompositeType</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   26</span>     {
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   27</span>         <span style="font-weight: bold; color: #e1e18a">bool</span><span style="color: #dfdfbf">boolValue</span> = <span style="font-weight: bold; color: #e1e18a">true</span>;
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   28</span>         <span style="font-weight: bold; color: #e1e18a">string</span><span style="color: #dfdfbf">stringValue</span> = <span style="color: #c89191">"Hello
"</span>;
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   29</span>         <span style="color: #2b91af">NestedType</span><span style="color: #dfdfbf">nestedObject</span> = <span style="font-weight: bold; color: #e1e18a">new</span><span style="color: #2b91af">NestedType</span>();
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   30</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   31</span>        
[<span style="color: #2b91af">DataMember</span>]
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   32</span>         <span style="font-weight: bold; color: #e1e18a">public</span><span style="font-weight: bold; color: #e1e18a">bool</span><span style="color: #dfdfbf">BoolValue</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   33</span>        
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   34</span>             <span style="font-weight: bold; color: #e1e18a">get</span> { <span style="font-weight: bold; color: #e1e18a">return</span><span style="color: #dfdfbf">boolValue</span>;
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   35</span>             <span style="font-weight: bold; color: #e1e18a">set</span> { <span style="color: #dfdfbf">boolValue</span> = <span style="font-weight: bold; color: #e1e18a">value</span>;
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   36</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   37</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   38</span>        
[<span style="color: #2b91af">DataMember</span>]
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   39</span>         <span style="font-weight: bold; color: #e1e18a">public</span><span style="font-weight: bold; color: #e1e18a">string</span><span style="color: #dfdfbf">StringValue</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   40</span>        
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   41</span>             <span style="font-weight: bold; color: #e1e18a">get</span> { <span style="font-weight: bold; color: #e1e18a">return</span><span style="color: #dfdfbf">stringValue</span>;
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   42</span>             <span style="font-weight: bold; color: #e1e18a">set</span> { <span style="color: #dfdfbf">stringValue</span> = <span style="font-weight: bold; color: #e1e18a">value</span>;
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   43</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   44</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   45</span>        
[<span style="color: #2b91af">DataMember</span>]
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   46</span>         <span style="font-weight: bold; color: #e1e18a">public</span><span style="color: #2b91af">NestedType</span><span style="color: #dfdfbf">NestedObject</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   47</span>        
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   48</span>             <span style="font-weight: bold; color: #e1e18a">get</span> { <span style="font-weight: bold; color: #e1e18a">return</span><span style="color: #dfdfbf">nestedObject</span>;
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   49</span>             <span style="font-weight: bold; color: #e1e18a">set</span> { <span style="color: #dfdfbf">nestedObject</span> = <span style="font-weight: bold; color: #e1e18a">value</span>;
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   50</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   51</span>     }
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   52</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   53</span>     <span style="font-weight: bold; color: #e1e18a">public</span><span style="font-weight: bold; color: #e1e18a">class</span><span style="color: #2b91af">NestedType</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   54</span>     {
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   55</span>         <span style="font-weight: bold; color: #e1e18a">bool</span><span style="color: #dfdfbf">isVisible</span> = <span style="font-weight: bold; color: #e1e18a">false</span>;
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   56</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   57</span>         <span style="font-weight: bold; color: #e1e18a">public</span><span style="font-weight: bold; color: #e1e18a">bool</span><span style="color: #dfdfbf">IsVisible</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   58</span>        
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   59</span>             <span style="font-weight: bold; color: #e1e18a">get</span> { <span style="font-weight: bold; color: #e1e18a">return</span><span style="color: #dfdfbf">isVisible</span>;
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   60</span>             <span style="font-weight: bold; color: #e1e18a">set</span> { <span style="color: #dfdfbf">isVisible</span> = <span style="font-weight: bold; color: #e1e18a">value</span>;
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   61</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   62</span>     }
</p>
        </div>
        <p>
 
</p>
        <p>
The same code in use after SP1 will not cause this error. WCF will interpret from <em>CompositeType</em>'s
[DataContract] attribute and <em>NestedObject</em>'s [DataMember] attribute that you
meant to put [DataContract] on <em>NestedType</em>. So what's the big deal, right?
WCF is doing me a solid by guessing at what I meant to do. To me, this violates the
repeated opt-in theme present in WCF. For every other important decision, the developer
must write code to opt-in to a feature. For example, TransactionFlow defaults to false
so we don't use the client's incoming transaction with explicitly writing code that
says to do so. 
</p>
        <p>
This is clearly not on the same level as TransactionFlow. But why does it assume something
about my objects? Why does it assume that every member of my object should be a DataMember?
</p>
        <p>
I noticed this new "feature" when troubleshooting some code that had different namespace
names specified in the DataContract attribute. Since the <em>NestedType</em> did not
have a [DataContract] attribute, the namespace was using the original namespace name.
The equivalent of <em>CompositeType </em>came through correctly, but the <em>NestedObject </em>had
no value.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=01df2e81-97da-4179-a4b0-a7c6178f5599" />
      </body>
      <title>3.5 Service Pack 1 - WCF Enhancement?</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,01df2e81-97da-4179-a4b0-a7c6178f5599.aspx</guid>
      <link>http://offroadcoder.com/2008/08/24/35ServicePack1WCFEnhancement.aspx</link>
      <pubDate>Sun, 24 Aug 2008 01:57:49 GMT</pubDate>
      <description>&lt;p&gt;
Our friends at Microsoft may have slipped one in on us. After installing the 3.5 Framework
Service Pack 1, it appears that you no longer need the [DataContract] or [DataMember]
attributes on your DataContracts and DataMembers. I'm not sure what the motivation
was for this "enhancement", but it caused some trouble for me the other day.
&lt;/p&gt;
&lt;p&gt;
For this example I will be using the base project VS2008 gives you when you create
a new WCF Service Library. I am simply adding a NestedType to the CompositeType given
in the base project.
&lt;/p&gt;
&lt;p&gt;
Before installing SP1, having code as it appears below would cause an error during
Metadata Exchange that reads something like "Metadata contains a reference that cannot
be resolved". Notice that &lt;em&gt;CompositeType&lt;/em&gt;'s &lt;em&gt;NestedObject&lt;/em&gt; is marked
as [DataMember] and also notice that the NestedType class is not marked as [DataContract]
and has no [DataMember] attributes. Adding [DataContract] on &lt;em&gt;NestedType&lt;/em&gt; and
[DataMember] on &lt;em&gt;IsVisible&lt;/em&gt; will clear this error and everything will work
as expected.&amp;nbsp; 
&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red220\green220\blue204;\red63\green63\blue63;\red43\green145\blue175;\red225\green225\blue138;\red223\green223\blue191;\red200\green145\blue145;}??\fs18 \cf1\cb2\highlight2 \tab [\cf3 DataContract\cf1 ]\par ??\tab \cf4 {\b public}\cf1  \cf4 {\b class}\cf1  \cf3 CompositeType\par ??\cf1 \tab \{\par ??\tab \tab \cf4 {\b bool}\cf1  \cf5 boolValue\cf1  = \cf4 {\b true}\cf1 ;\par ??\tab \tab \cf4 {\b string}\cf1  \cf5 stringValue\cf1  = \cf6 "Hello "\cf1 ;\par ??\tab \tab \cf3 NestedType\cf1  \cf5 nestedObject\cf1  = \cf4 {\b new}\cf1  \cf3 NestedType\cf1 ();\par ??\par ??\tab \tab [\cf3 DataMember\cf1 ]\par ??\tab \tab \cf4 {\b public}\cf1  \cf4 {\b bool}\cf1  \cf5 BoolValue\par ??\cf1 \tab \tab \{\par ??\tab \tab \tab \cf4 {\b get}\cf1  \{ \cf4 {\b return}\cf1  \cf5 boolValue\cf1 ; \}\par ??\tab \tab \tab \cf4 {\b set}\cf1  \{ \cf5 boolValue\cf1  = \cf4 {\b value}\cf1 ; \}\par ??\tab \tab \}\par ??\par ??\tab \tab [\cf3 DataMember\cf1 ]\par ??\tab \tab \cf4 {\b public}\cf1  \cf4 {\b string}\cf1  \cf5 StringValue\par ??\cf1 \tab \tab \{\par ??\tab \tab \tab \cf4 {\b get}\cf1  \{ \cf4 {\b return}\cf1  \cf5 stringValue\cf1 ; \}\par ??\tab \tab \tab \cf4 {\b set}\cf1  \{ \cf5 stringValue\cf1  = \cf4 {\b value}\cf1 ; \}\par ??\tab \tab \}\par ??\par ??\tab \tab [\cf3 DataMember\cf1 ]\par ??\tab \tab \cf4 {\b public}\cf1  \cf3 NestedType\cf1  \cf5 NestedObject\par ??\cf1 \tab \tab \{\par ??\tab \tab \tab \cf4 {\b get}\cf1  \{ \cf4 {\b return}\cf1  \cf5 nestedObject\cf1 ; \}\par ??\tab \tab \tab \cf4 {\b set}\cf1  \{ \cf5 nestedObject\cf1  = \cf4 {\b value}\cf1 ; \}\par ??\tab \tab \}\par ??\tab \}\par ??\par ??\tab \cf4 {\b public}\cf1  \cf4 {\b class}\cf1  \cf3 NestedType\par ??\cf1 \tab \{\par ??\tab \tab \cf4 {\b bool}\cf1  \cf5 isVisible\cf1  = \cf4 {\b false}\cf1 ;\par ??\par ??\tab \tab \cf4 {\b public}\cf1  \cf4 {\b bool}\cf1  \cf5 IsVisible\par ??\cf1 \tab \tab \{\par ??\tab \tab \tab \cf4 {\b get}\cf1  \{ \cf4 {\b return}\cf1  \cf5 isVisible\cf1 ; \}\par ??\tab \tab \tab \cf4 {\b set}\cf1  \{ \cf5 isVisible\cf1  = \cf4 {\b value}\cf1 ; \}\par ??\tab \tab \}\par ??\tab \}}
--&gt;
&lt;div style="overflow-y: scroll; font-size: 9pt; background: #3f3f3f; width: 600px; color: #dcdccc; font-family: consolas; height: 200px"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af"&gt;DataContract&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold; color: #e1e18a"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CompositeType&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;bool&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;boolValue&lt;/span&gt; = &lt;span style="font-weight: bold; color: #e1e18a"&gt;true&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;stringValue&lt;/span&gt; = &lt;span style="color: #c89191"&gt;"Hello
"&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;NestedType&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;nestedObject&lt;/span&gt; = &lt;span style="font-weight: bold; color: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NestedType&lt;/span&gt;();
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 30&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold; color: #e1e18a"&gt;bool&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;BoolValue&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 33&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 34&lt;/span&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 style="font-weight: bold; color: #e1e18a"&gt;get&lt;/span&gt; { &lt;span style="font-weight: bold; color: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;boolValue&lt;/span&gt;;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 35&lt;/span&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 style="font-weight: bold; color: #e1e18a"&gt;set&lt;/span&gt; { &lt;span style="color: #dfdfbf"&gt;boolValue&lt;/span&gt; = &lt;span style="font-weight: bold; color: #e1e18a"&gt;value&lt;/span&gt;;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 36&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 37&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold; color: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;StringValue&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 41&lt;/span&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 style="font-weight: bold; color: #e1e18a"&gt;get&lt;/span&gt; { &lt;span style="font-weight: bold; color: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;stringValue&lt;/span&gt;;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 42&lt;/span&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 style="font-weight: bold; color: #e1e18a"&gt;set&lt;/span&gt; { &lt;span style="color: #dfdfbf"&gt;stringValue&lt;/span&gt; = &lt;span style="font-weight: bold; color: #e1e18a"&gt;value&lt;/span&gt;;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 44&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 45&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 46&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NestedType&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;NestedObject&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 47&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 48&lt;/span&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 style="font-weight: bold; color: #e1e18a"&gt;get&lt;/span&gt; { &lt;span style="font-weight: bold; color: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;nestedObject&lt;/span&gt;;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 49&lt;/span&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 style="font-weight: bold; color: #e1e18a"&gt;set&lt;/span&gt; { &lt;span style="color: #dfdfbf"&gt;nestedObject&lt;/span&gt; = &lt;span style="font-weight: bold; color: #e1e18a"&gt;value&lt;/span&gt;;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 51&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 52&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 53&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold; color: #e1e18a"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NestedType&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 54&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 55&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;bool&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;isVisible&lt;/span&gt; = &lt;span style="font-weight: bold; color: #e1e18a"&gt;false&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 56&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 57&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold; color: #e1e18a"&gt;bool&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;IsVisible&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 58&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 59&lt;/span&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 style="font-weight: bold; color: #e1e18a"&gt;get&lt;/span&gt; { &lt;span style="font-weight: bold; color: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;isVisible&lt;/span&gt;;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 60&lt;/span&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 style="font-weight: bold; color: #e1e18a"&gt;set&lt;/span&gt; { &lt;span style="color: #dfdfbf"&gt;isVisible&lt;/span&gt; = &lt;span style="font-weight: bold; color: #e1e18a"&gt;value&lt;/span&gt;;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 61&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 62&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
The same code in use after SP1 will not cause this error. WCF will interpret from &lt;em&gt;CompositeType&lt;/em&gt;'s
[DataContract] attribute and &lt;em&gt;NestedObject&lt;/em&gt;'s [DataMember] attribute that you
meant to put [DataContract] on &lt;em&gt;NestedType&lt;/em&gt;. So what's the big deal, right?
WCF is doing me a solid by guessing at what I meant to do. To me, this violates the
repeated opt-in theme present in WCF. For every other important decision, the developer
must write code to opt-in to a feature. For example, TransactionFlow defaults to false
so we don't use the client's incoming transaction with explicitly writing code that
says to do so. 
&lt;/p&gt;
&lt;p&gt;
This is clearly not on the same level as TransactionFlow. But why does it assume something
about my objects? Why does it assume that every member of my object should be a DataMember?
&lt;/p&gt;
&lt;p&gt;
I noticed this new "feature" when troubleshooting some code that had different namespace
names specified in the DataContract attribute. Since the &lt;em&gt;NestedType&lt;/em&gt; did not
have a [DataContract] attribute, the namespace was using the original namespace name.
The equivalent of &lt;em&gt;CompositeType &lt;/em&gt;came through correctly, but the &lt;em&gt;NestedObject &lt;/em&gt;had
no value.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=01df2e81-97da-4179-a4b0-a7c6178f5599" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,01df2e81-97da-4179-a4b0-a7c6178f5599.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=0c636536-67bd-4395-849c-5554c1ee20f2</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,0c636536-67bd-4395-849c-5554c1ee20f2.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,0c636536-67bd-4395-849c-5554c1ee20f2.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0c636536-67bd-4395-849c-5554c1ee20f2</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Juval Löwy mentioned the <a href="http://msdn.microsoft.com/en-us/library/ms732023.aspx">Microsoft
Service Trace Viewer</a> in a <a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032379028&amp;EventCategory=5&amp;culture=en-US&amp;CountryCode=US">webcast</a> today.
If you ever wondered exactly what WCF does under all of those covers, check this out.
</p>
        <p>
First things first. Enable tracing on the client and host applications using the WCF
Configuration Editor. Enable the verbose trace level and check all of the listener
settings. This will add all of the necessary &lt;system.diagnostics&gt; settings in
your config file. The next time you start each of the applications, a .svclog file
will be created that will be used by the Service Trace Viewer.
</p>
        <p>
          <img src="http://gotjeep.net/Blogs/content/binary/EditWCFConfigTracing.png" border="0" />
        </p>
        <p>
Start your host, start your client, run through the test cases that you want to analyze
in the viewer. After your test run is complete, open the viewer, located at C:\Program
Files\Microsoft SDKs\Windows\v6.0A\bin\SvcTraceViewer.exe. "Open" the host.svclog
file, and then "Add" the client.svclog file. Both "Open" and "Add" are menu items
under "File".
</p>
        <p>
Start on the Activity tab, look through the host and client activities that occurred.
Everything from ServiceHost construction through ServiceHost closing shows up. This
is very cool, especially when analyzing the differences between different security,
session, and reliability settings.
</p>
        <p>
          <img src="http://gotjeep.net/Blogs/content/binary/SVTActivityTab.png" border="0" />
        </p>
        <p>
When you are done looking through the activities, check out the Graph tab. Here you
can look at the interactions between the client and host, as well as looking at the
details of each activity (at the top right). At the bottom right, you will also notice
the formatted and xml details of this activity.
</p>
        <p>
          <img src="http://gotjeep.net/Blogs/content/binary/STV.png" border="0" />
        </p>
        <p>
This is a very cool tool for both debugging and training. Below is my lame test projects,
if you want to skip past the configuration and check out the tool. My .svclog files
are located in the Client and Host folders.
</p>
        <p>
          <a href="http://gotjeep.net/Blogs/content/binary/SvtTest.zip">SvtTest.zip (190.32
KB)</a>
        </p>
        <p>
Enjoy! Thanks to Juval for the direction.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=0c636536-67bd-4395-849c-5554c1ee20f2" />
      </body>
      <title>Service Trace Viewer</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,0c636536-67bd-4395-849c-5554c1ee20f2.aspx</guid>
      <link>http://offroadcoder.com/2008/06/19/ServiceTraceViewer.aspx</link>
      <pubDate>Thu, 19 Jun 2008 02:23:30 GMT</pubDate>
      <description>
		&lt;p&gt;
Juval Löwy mentioned the &lt;a href="http://msdn.microsoft.com/en-us/library/ms732023.aspx"&gt;Microsoft
Service Trace Viewer&lt;/a&gt; in a &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032379028&amp;amp;EventCategory=5&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;webcast&lt;/a&gt; today.
If you ever wondered exactly what WCF does under all of those covers, check this out.
&lt;/p&gt;
&lt;p&gt;
First things first. Enable tracing on the client and host applications using the WCF
Configuration Editor. Enable the verbose trace level and check all of the listener
settings. This will add all of the necessary &amp;lt;system.diagnostics&amp;gt; settings in
your config file. The next time you start each of the applications, a .svclog file
will be created that will be used by the Service Trace Viewer.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://gotjeep.net/Blogs/content/binary/EditWCFConfigTracing.png" border="0" /&gt; 
&lt;/p&gt;
&lt;p&gt;
Start your host, start your client, run through the test cases that you want to analyze
in the viewer. After your test run is complete, open the viewer, located at C:\Program
Files\Microsoft SDKs\Windows\v6.0A\bin\SvcTraceViewer.exe. "Open" the host.svclog
file, and then "Add" the client.svclog file. Both "Open" and "Add" are menu items
under "File".
&lt;/p&gt;
&lt;p&gt;
Start on the Activity tab, look through the host and client activities that occurred.
Everything from ServiceHost construction through ServiceHost closing shows up. This
is very cool, especially when analyzing the differences between different security,
session, and reliability settings.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://gotjeep.net/Blogs/content/binary/SVTActivityTab.png" border="0" /&gt; 
&lt;/p&gt;
&lt;p&gt;
When you are done looking through the activities, check out the Graph tab. Here you
can look at the interactions between the client and host, as well as looking at the
details of each activity (at the top right). At the bottom right, you will also notice
the formatted and xml details of this activity.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://gotjeep.net/Blogs/content/binary/STV.png" border="0" /&gt; 
&lt;/p&gt;
&lt;p&gt;
This is a very cool tool for both debugging and training. Below is my lame test projects,
if you want to skip past the configuration and check out the tool. My .svclog files
are located in the Client and Host folders.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://gotjeep.net/Blogs/content/binary/SvtTest.zip"&gt;SvtTest.zip (190.32
KB)&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Enjoy! Thanks to Juval for the direction.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=0c636536-67bd-4395-849c-5554c1ee20f2" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,0c636536-67bd-4395-849c-5554c1ee20f2.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>Dev Tools</category>
      <category>Visual Studio</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=60081b96-9f12-47f4-a102-ef220b2abc79</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,60081b96-9f12-47f4-a102-ef220b2abc79.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,60081b96-9f12-47f4-a102-ef220b2abc79.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=60081b96-9f12-47f4-a102-ef220b2abc79</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was looking for guidance on this topic, and came up with nothing. I'm sure people
are doing this, but can't find any info. For anyone looking like I was, here's how
to do it.
</p>
        <p>
It's much simpler than I imagined, thanks to WCF. You can programmatically create
your endpoint, binding, and channel inside your service. This would require that the
address be hard-coded and require a recompile to change the address or binding. As
long as your host's app.config or web.config has a client endpoint specifying the
contract, you don't have to go through all that work. Your service is simply a client
of another service, so your code looks just like that of a client of your service.
Furthermore, changing the address or binding is as simple as changing config file
values.
</p>
        <p>
Service code:<br /><br /></p>
        <div style="BORDER-RIGHT: #896894 1px solid; BORDER-TOP: #896894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #896894 1px solid; WIDTH: 750px; BORDER-BOTTOM: #896894 1px solid; HEIGHT: 300px">
          <div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New">
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">    1</span> <span style="COLOR: blue">using</span> System;
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">    2</span> <span style="COLOR: blue">using</span> System.ServiceModel;
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">    3</span> <span style="COLOR: blue">using</span> DataContracts;
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">    4</span> <span style="COLOR: blue">namespace</span> ServiceImplementation
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">    5</span> {
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">    6</span>    
[<span style="COLOR: #2b91af">ServiceContract</span>]
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">    7</span>     <span style="COLOR: blue">public</span><span style="COLOR: blue">interface</span><span style="COLOR: #2b91af">IEmailService</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">    8</span>    
{
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">    9</span>    
    [<span style="COLOR: #2b91af">OperationContract</span>]
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   10</span>         <span style="COLOR: blue">void</span> Send(DataContracts.<span style="COLOR: #2b91af">MailMessage</span> msg);
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   11</span>     }
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   12</span> 
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   13</span>     <span style="COLOR: blue">public</span><span style="COLOR: blue">class</span><span style="COLOR: #2b91af">EmailService</span> : <span style="COLOR: #2b91af">IEmailService</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   14</span>     {
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   15</span>        
[<span style="COLOR: #2b91af">OperationBehavior</span>]
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   16</span>         <span style="COLOR: blue">public</span><span style="COLOR: blue">void</span> Send(DataContracts.<span style="COLOR: #2b91af">MailMessage</span> msg)
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   17</span>        
{
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   18</span>        
    <span style="COLOR: green">// Open client proxy for legacy web
service</span></p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   19</span>        
    <span style="COLOR: blue">using</span> (<span style="COLOR: #2b91af">LegacyEmailServiceClient</span> proxy
=
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   20</span>        
        <span style="COLOR: blue">new</span><span style="COLOR: #2b91af">LegacyEmailServiceClient</span>())
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   21</span>        
    {
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   22</span>        
        proxy.SendEmail(msg.To, 
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   23</span>        
            msg.CC, 
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   24</span>        
            msg.Bcc, 
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   25</span>        
            msg.Body, 
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   26</span>        
            msg.Attachments);
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   27</span>        
    }
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   28</span>        
}
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   29</span>     }
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   30</span> }
</p>
            <p style="MARGIN: 0px">
              <span style="COLOR: #2b91af">   31</span> 
</p>
          </div>
          <!--EndFragment-->
        </div>
        <br />
        <br />
Host's app.config:<br /><br /><div style="BORDER-RIGHT: #896894 1px solid; BORDER-TOP: #896894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #896894 1px solid; WIDTH: 750px; BORDER-BOTTOM: #896894 1px solid; HEIGHT: 300px"><div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    1</span> <span style="COLOR: blue">&lt;?</span><span style="COLOR: #a31515">xml</span><span style="COLOR: blue"></span><span style="COLOR: red">version</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">1.0</span>"<span style="COLOR: blue"></span><span style="COLOR: red">encoding</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">utf-8</span>"<span style="COLOR: blue">?&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    2</span> <span style="COLOR: blue">&lt;</span><span style="COLOR: #a31515">configuration</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    3</span> <span style="COLOR: blue"> 
&lt;</span><span style="COLOR: #a31515">system.serviceModel</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    4</span> <span style="COLOR: blue"> 
  &lt;</span><span style="COLOR: #a31515">bindings</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    5</span> <span style="COLOR: blue"> 
    &lt;</span><span style="COLOR: #a31515">basicHttpBinding</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    6</span> <span style="COLOR: blue"> 
      &lt;</span><span style="COLOR: #a31515">binding</span><span style="COLOR: blue"></span><span style="COLOR: red">name</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">BasicHttpBinding_Common</span>"<span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    7</span> <span style="COLOR: blue"> 
        &lt;</span><span style="COLOR: #a31515">security</span><span style="COLOR: blue"></span><span style="COLOR: red">mode</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">None</span>"<span style="COLOR: blue">/&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    8</span> <span style="COLOR: blue"> 
      &lt;/</span><span style="COLOR: #a31515">binding</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    9</span> <span style="COLOR: blue"> 
    &lt;/</span><span style="COLOR: #a31515">basicHttpBinding</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   10</span> <span style="COLOR: blue"> 
    &lt;</span><span style="COLOR: #a31515">netTcpBinding</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   11</span> <span style="COLOR: blue"> 
      &lt;</span><span style="COLOR: #a31515">binding</span><span style="COLOR: blue"></span><span style="COLOR: red">name</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">NetTcpBinding_Common</span>"<span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   12</span> <span style="COLOR: blue"> 
        &lt;</span><span style="COLOR: #a31515">security</span><span style="COLOR: blue"></span><span style="COLOR: red">mode</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">None</span>"<span style="COLOR: blue">/&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   13</span> <span style="COLOR: blue"> 
      &lt;/</span><span style="COLOR: #a31515">binding</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   14</span> <span style="COLOR: blue"> 
    &lt;/</span><span style="COLOR: #a31515">netTcpBinding</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   15</span> <span style="COLOR: blue"> 
  &lt;/</span><span style="COLOR: #a31515">bindings</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   16</span> <span style="COLOR: blue"> 
  &lt;</span><span style="COLOR: #a31515">client</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   17</span> <span style="COLOR: blue"> 
    &lt;</span><span style="COLOR: #a31515">endpoint</span><span style="COLOR: blue"></span><span style="COLOR: red">address</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">http://www.gotjeep.net/legacy/email.asmx</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   18</span> <span style="COLOR: blue"> 
        </span><span style="COLOR: red">binding</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">basicHttpBinding</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   19</span> <span style="COLOR: blue"> 
              </span><span style="COLOR: red">bindingConfiguration</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">BasicHttpBinding_Common</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   20</span> <span style="COLOR: blue"> 
        </span><span style="COLOR: red">contract</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">LegacyEmailServiceClient</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   21</span> <span style="COLOR: blue"> 
              </span><span style="COLOR: red">name</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">LegacyEmailServiceClient</span>"<span style="COLOR: blue"> /&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   22</span> <span style="COLOR: blue"> 
  &lt;/</span><span style="COLOR: #a31515">client</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   23</span> <span style="COLOR: blue"> 
  &lt;</span><span style="COLOR: #a31515">services</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   24</span> <span style="COLOR: blue"> 
    &lt;</span><span style="COLOR: #a31515">service</span><span style="COLOR: blue"></span><span style="COLOR: red">name</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">ServiceImplementation.EmailService</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   25</span> <span style="COLOR: blue"> 
            </span><span style="COLOR: red">behaviorConfiguration</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">returnFaults</span>"<span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   26</span> <span style="COLOR: blue"> 
      &lt;</span><span style="COLOR: #a31515">host</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   27</span> <span style="COLOR: blue"> 
        &lt;</span><span style="COLOR: #a31515">baseAddresses</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   28</span> <span style="COLOR: blue"> 
          &lt;</span><span style="COLOR: #a31515">add</span><span style="COLOR: blue"></span><span style="COLOR: red">baseAddress</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">http://localhost:8080/EmailService</span>"<span style="COLOR: blue"> /&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   29</span> <span style="COLOR: blue"> 
          &lt;</span><span style="COLOR: #a31515">add</span><span style="COLOR: blue"></span><span style="COLOR: red">baseAddress</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">net.tcp://localhost:8088/EmailService</span>"<span style="COLOR: blue"> /&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   30</span> <span style="COLOR: blue"> 
        &lt;/</span><span style="COLOR: #a31515">baseAddresses</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   31</span> <span style="COLOR: blue"> 
      &lt;/</span><span style="COLOR: #a31515">host</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   32</span> <span style="COLOR: blue"> 
      &lt;</span><span style="COLOR: #a31515">endpoint</span><span style="COLOR: blue"></span><span style="COLOR: red">name</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">NetTcpBinding_EmailService</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   33</span> <span style="COLOR: blue"> 
                </span><span style="COLOR: red">binding</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">netTcpBinding</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   34</span> <span style="COLOR: blue"> 
                </span><span style="COLOR: red">bindingConfiguration</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">NetTcpBinding_Common</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   35</span> <span style="COLOR: blue"> 
                </span><span style="COLOR: red">contract</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">ServiceImplementation.IEmailService</span>"<span style="COLOR: blue">/&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   36</span> <span style="COLOR: blue"> 
      &lt;</span><span style="COLOR: #a31515">endpoint</span><span style="COLOR: blue"></span><span style="COLOR: red">name</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">BasicHttpBinding_EmailService</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   37</span> <span style="COLOR: blue"> 
                </span><span style="COLOR: red">binding</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">basicHttpBinding</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   38</span> <span style="COLOR: blue"> 
                </span><span style="COLOR: red">bindingConfiguration</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">BasicHttpBinding_Common</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   39</span> <span style="COLOR: blue"> 
                </span><span style="COLOR: red">contract</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">ServiceImplementation.IEmailService</span>"<span style="COLOR: blue">/&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   40</span> <span style="COLOR: blue"> 
    &lt;/</span><span style="COLOR: #a31515">service</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   41</span> <span style="COLOR: blue"> 
  &lt;/</span><span style="COLOR: #a31515">services</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   42</span> <span style="COLOR: blue"> 
  &lt;</span><span style="COLOR: #a31515">behaviors</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   43</span> <span style="COLOR: blue"> 
    &lt;</span><span style="COLOR: #a31515">serviceBehaviors</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   44</span> <span style="COLOR: blue"> 
      &lt;</span><span style="COLOR: #a31515">behavior</span><span style="COLOR: blue"></span><span style="COLOR: red">name</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">returnFaults</span>"<span style="COLOR: blue"> &gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   45</span> <span style="COLOR: blue"> 
        &lt;</span><span style="COLOR: #a31515">serviceMetadata</span><span style="COLOR: blue"></span><span style="COLOR: red">httpGetEnabled</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">true</span>"<span style="COLOR: blue"> /&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   46</span> <span style="COLOR: blue"> 
      &lt;/</span><span style="COLOR: #a31515">behavior</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   47</span> <span style="COLOR: blue"> 
    &lt;/</span><span style="COLOR: #a31515">serviceBehaviors</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   48</span> <span style="COLOR: blue"> 
  &lt;/</span><span style="COLOR: #a31515">behaviors</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   49</span> <span style="COLOR: blue"> 
&lt;/</span><span style="COLOR: #a31515">system.serviceModel</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   50</span> <span style="COLOR: blue">&lt;/</span><span style="COLOR: #a31515">configuration</span><span style="COLOR: blue">&gt;</span></p></div><!--EndFragment--></div><p></p><img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=60081b96-9f12-47f4-a102-ef220b2abc79" /></body>
      <title>Calling services from services</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,60081b96-9f12-47f4-a102-ef220b2abc79.aspx</guid>
      <link>http://offroadcoder.com/2008/03/27/CallingServicesFromServices.aspx</link>
      <pubDate>Thu, 27 Mar 2008 02:08:46 GMT</pubDate>
      <description>&lt;p&gt;
I was looking for guidance on this topic, and came up with nothing. I'm sure people
are doing this, but can't find any info. For anyone looking like I was, here's how
to do it.
&lt;/p&gt;
&lt;p&gt;
It's much simpler than I imagined, thanks to WCF. You can programmatically create
your endpoint, binding, and channel inside your service. This would require that the
address be hard-coded and require a recompile to change the address or binding. As
long as your host's app.config or web.config has a client endpoint specifying the
contract, you don't have to go through all that work. Your service is simply a client
of another service, so your code looks just like that of a client of your service.
Furthermore, changing the address or binding is as simple as changing config file
values.
&lt;/p&gt;
&lt;p&gt;
Service code:&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;div style="BORDER-RIGHT: #896894 1px solid; BORDER-TOP: #896894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #896894 1px solid; WIDTH: 750px; BORDER-BOTTOM: #896894 1px solid; HEIGHT: 300px"&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.ServiceModel;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; DataContracts;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; ServiceImplementation
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;ServiceContract&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IEmailService&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="COLOR: #2b91af"&gt;OperationContract&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Send(DataContracts.&lt;span style="COLOR: #2b91af"&gt;MailMessage&lt;/span&gt; msg);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;EmailService&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IEmailService&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;OperationBehavior&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Send(DataContracts.&lt;span style="COLOR: #2b91af"&gt;MailMessage&lt;/span&gt; msg)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: green"&gt;// Open client proxy for legacy web
service&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;LegacyEmailServiceClient&lt;/span&gt; proxy
=
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&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; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;LegacyEmailServiceClient&lt;/span&gt;())
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&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; proxy.SendEmail(msg.To, 
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&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; msg.CC, 
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&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; msg.Bcc, 
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&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; msg.Body, 
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&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; msg.Attachments);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;}
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
Host's app.config:&lt;br&gt;
&lt;br&gt;
&lt;div style="BORDER-RIGHT: #896894 1px solid; BORDER-TOP: #896894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #896894 1px solid; WIDTH: 750px; BORDER-BOTTOM: #896894 1px solid; HEIGHT: 300px"&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;xml&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;version&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;1.0&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;encoding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;?&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;BasicHttpBinding_Common&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;security&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mode&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;None&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;netTcpBinding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;NetTcpBinding_Common&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;security&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mode&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;None&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;netTcpBinding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;client&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;http://www.gotjeep.net/legacy/email.asmx&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;basicHttpBinding&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;BasicHttpBinding_Common&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;LegacyEmailServiceClient&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;LegacyEmailServiceClient&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;client&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;services&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;service&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;ServiceImplementation.EmailService&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;returnFaults&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;host&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;add&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;baseAddress&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;http://localhost:8080/EmailService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;add&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;baseAddress&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;net.tcp://localhost:8088/EmailService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;host&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;NetTcpBinding_EmailService&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;netTcpBinding&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;NetTcpBinding_Common&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;ServiceImplementation.IEmailService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;BasicHttpBinding_EmailService&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;basicHttpBinding&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;BasicHttpBinding_Common&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;ServiceImplementation.IEmailService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;service&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;services&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;returnFaults&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;serviceMetadata&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;httpGetEnabled&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=60081b96-9f12-47f4-a102-ef220b2abc79" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,60081b96-9f12-47f4-a102-ef220b2abc79.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=dd494296-3fec-4770-b381-75f0a4e3fae5</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,dd494296-3fec-4770-b381-75f0a4e3fae5.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,dd494296-3fec-4770-b381-75f0a4e3fae5.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=dd494296-3fec-4770-b381-75f0a4e3fae5</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you haven't heard me praise Juval Löwy's book <a href="http://www.amazon.com/Programming-WCF-Services-Juval-Lowy/dp/0596526997/sr=1-2/qid=1160362131/ref=sr_1_2/104-3785412-4763969?ie=UTF8&amp;s=books">Programming
WCF Services</a> or Michele Leroux Bustamante's book <a href="http://www.amazon.com/Learning-WCF-Hands-Michele-Bustamante/dp/0596101627/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1206496842&amp;sr=8-1">Learning
WCF: A Hands-on Guide</a> yet... these books are the best WCF books available. Every
question I have had has been answered by these two books. In fact, most of the forum
and newsgroup resolutions out there come from one or both of these books. If you haven't
already, check out their <a href="http://idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;tabid=11">IDesign
Code Library</a> and and the <a href="http://idesign.net/idesign/download/IDesign%20WCF%20Coding%20Standard.zip">IDesign
WCF Coding Standard</a> at <a href="http://www.idesign.net/">www.IDesign.net</a>.
</p>
        <p>
OK, problem and resolution of the day... how do I generate a proxy file with the same
collection class as my service implementation. My service uses List&lt;T&gt;. WCF
converts this to be a more interoperable array of T. When you generate the proxy,
it is generated with T[]. To be able to enjoy the same collection features as
the service, you only need a few more parameters on svcutil.
</p>
        <div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New">
          <span style="COLOR: #2b91af">
            <div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New">
              <p style="MARGIN: 0px">
                <span style="COLOR: #2b91af">    7</span>    
[<span style="COLOR: #2b91af">ServiceContract</span>]
</p>
              <p style="MARGIN: 0px">
                <span style="COLOR: #2b91af">    8</span>     <span style="COLOR: blue">public</span><span style="COLOR: blue">interface</span><span style="COLOR: #2b91af">IEmailService</span></p>
              <p style="MARGIN: 0px">
                <span style="COLOR: #2b91af">    9</span>    
{
</p>
              <p style="MARGIN: 0px">
                <span style="COLOR: #2b91af">   10</span>        
[<span style="COLOR: #2b91af">OperationContract</span>]
</p>
              <p style="MARGIN: 0px">
                <span style="COLOR: #2b91af">   11</span>         <span style="COLOR: blue">string</span> MyOperation1(<span style="COLOR: blue">string</span> myValue);
</p>
              <p style="MARGIN: 0px">
                <span style="COLOR: #2b91af">   12</span> 
</p>
              <p style="MARGIN: 0px">
                <span style="COLOR: #2b91af">   13</span>        
[<span style="COLOR: #2b91af">OperationContract</span>]
</p>
              <p style="MARGIN: 0px">
                <span style="COLOR: #2b91af">   14</span>         <span style="COLOR: #2b91af">List</span>&lt;<span style="COLOR: #2b91af">String</span>&gt;
MyOperation2(<span style="COLOR: blue">string</span> myValue);
</p>
              <p style="MARGIN: 0px">
                <span style="COLOR: #2b91af">   15</span>     }<font face="Verdana"></font></p>
            </div>
          </span>
        </div>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <font size="2">
            <p>
              <font size="2">
                <font size="2">
                </font>
              </font>
            </p>
          </font>
          <font size="2">
          </font>
        </blockquote>
        <p dir="ltr">
          <em>Example 1: Generate proxy with T[]</em>
        </p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <font face="Courier New" color="#000080">svcutil http://localhost:8080/EmailService
/out:EmailServiceProxy.cs /noconfig</font>
          </p>
          <font size="2">
            <font size="2">
              <p>
[System.ServiceModel.
</p>
            </font>
            <font color="#2b91af" size="2">OperationContractAttribute</font>
            <font size="2">(Action=</font>
            <font color="#a31515" size="2">"http://tempuri.org/IEmailService/MyOperation2"</font>
            <font size="2">,
ReplyAction=</font>
            <font color="#a31515" size="2">"http://tempuri.org/IEmailService/MyOperation2Response"</font>
            <font size="2">)]<br /><font color="#0000ff" size="2">string</font><font size="2">[] MyOperation2(</font><font color="#0000ff" size="2">string</font><font size="2"> myValue);</font></font>
          </font>
        </blockquote>
        <p>
          <em>Example 2: Generate proxy with List&lt;T&gt;</em>
        </p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <font face="Courier New" color="#000080">svcutil http://localhost:8080/EmailService
/out:EmailServiceProxy.cs /noconfig /ct:System.Collections.Generic.List`1</font>
          </p>
          <p dir="ltr">
[System.ServiceModel.<font color="#2b91af" size="2">OperationContractAttribute</font><font size="2">(Action=</font><font color="#a31515" size="2">"http://tempuri.org/IEmailService/MyOperation2"</font><font size="2">,
ReplyAction=</font><font color="#a31515" size="2">"http://tempuri.org/IEmailService/MyOperation2Response"</font><font size="2">)]<br />
System.Collections.Generic.</font><font color="#2b91af" size="2">List</font><font size="2">&lt;</font><font color="#0000ff" size="2">string</font><font size="2">&gt;
MyOperation2(</font><font color="#0000ff" size="2">string</font><font size="2"> myValue);</font><font size="2"></font></p>
        </blockquote>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=dd494296-3fec-4770-b381-75f0a4e3fae5" />
      </body>
      <title>Choosing your client proxy collection class</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,dd494296-3fec-4770-b381-75f0a4e3fae5.aspx</guid>
      <link>http://offroadcoder.com/2008/03/26/ChoosingYourClientProxyCollectionClass.aspx</link>
      <pubDate>Wed, 26 Mar 2008 02:22:22 GMT</pubDate>
      <description>&lt;p&gt;
If you haven't heard me praise Juval Löwy's book &lt;a href="http://www.amazon.com/Programming-WCF-Services-Juval-Lowy/dp/0596526997/sr=1-2/qid=1160362131/ref=sr_1_2/104-3785412-4763969?ie=UTF8&amp;amp;s=books"&gt;Programming
WCF Services&lt;/a&gt; or Michele Leroux Bustamante's book &lt;a href="http://www.amazon.com/Learning-WCF-Hands-Michele-Bustamante/dp/0596101627/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1206496842&amp;amp;sr=8-1"&gt;Learning
WCF: A Hands-on Guide&lt;/a&gt; yet... these books are the best WCF books available. Every
question I have had has been answered by these two books. In fact, most of the forum
and newsgroup resolutions out there come from one or both of these books. If you haven't
already, check out their &lt;a href="http://idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;amp;tabid=11"&gt;IDesign
Code Library&lt;/a&gt; and and the &lt;a href="http://idesign.net/idesign/download/IDesign%20WCF%20Coding%20Standard.zip"&gt;IDesign
WCF Coding Standard&lt;/a&gt; at &lt;a href="http://www.idesign.net/"&gt;www.IDesign.net&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
OK, problem and resolution of the day... how do I generate a proxy file with the same
collection class as my service implementation. My service uses List&amp;lt;T&amp;gt;. WCF
converts this to be a more interoperable array of T. When you generate the proxy,
it is generated with T[].&amp;nbsp;To be able to enjoy the same collection features as
the service, you only need a few more parameters on svcutil.
&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: #2b91af"&gt; 
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;ServiceContract&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IEmailService&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;OperationContract&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; MyOperation1(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; myValue);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;OperationContract&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;&amp;gt;
MyOperation2(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; myValue);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;font face=Verdana&gt; &lt;/font&gt;
&lt;/span&gt;&gt;
&lt;/div&gt;
&gt;&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;font size=2&gt; 
&lt;p&gt;
&lt;font size=2&gt;&lt;font size=2&gt;
&lt;/p&gt;
&lt;/font&gt;&gt;&lt;font size=2&gt;&lt;/font&gt;&lt;/blockquote&gt; 
&lt;p dir=ltr&gt;
&lt;em&gt;Example 1: Generate proxy with T[]&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;font face="Courier New" color=#000080&gt;svcutil http://localhost:8080/EmailService
/out:EmailServiceProxy.cs /noconfig&lt;/font&gt;
&lt;/p&gt;
&lt;font size=2&gt;&lt;font size=2&gt; 
&lt;p&gt;
[System.ServiceModel.
&lt;/font&gt;&lt;font color=#2b91af size=2&gt;OperationContractAttribute&lt;/font&gt;&lt;font size=2&gt;(Action=&lt;/font&gt;&lt;font color=#a31515 size=2&gt;"http://tempuri.org/IEmailService/MyOperation2"&lt;/font&gt;&lt;font size=2&gt;,
ReplyAction=&lt;/font&gt;&lt;font color=#a31515 size=2&gt;"http://tempuri.org/IEmailService/MyOperation2Response"&lt;/font&gt;&lt;font size=2&gt;)]&lt;br&gt;
&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt;[] MyOperation2(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; myValue);&lt;/font&gt;&lt;/font&gt;&gt;
&lt;/font&gt;&lt;/blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Example 2: Generate proxy with List&amp;lt;T&amp;gt;&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;font face="Courier New" color=#000080&gt;svcutil http://localhost:8080/EmailService
/out:EmailServiceProxy.cs /noconfig /ct:System.Collections.Generic.List`1&lt;/font&gt;
&lt;/p&gt;
&lt;p dir=ltr&gt;
[System.ServiceModel.&lt;font color=#2b91af size=2&gt;OperationContractAttribute&lt;/font&gt;&lt;font size=2&gt;(Action=&lt;/font&gt;&lt;font color=#a31515 size=2&gt;"http://tempuri.org/IEmailService/MyOperation2"&lt;/font&gt;&lt;font size=2&gt;,
ReplyAction=&lt;/font&gt;&lt;font color=#a31515 size=2&gt;"http://tempuri.org/IEmailService/MyOperation2Response"&lt;/font&gt;&lt;font size=2&gt;)]&lt;br&gt;
System.Collections.Generic.&lt;/font&gt;&lt;font color=#2b91af size=2&gt;List&lt;/font&gt;&lt;font size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt;&amp;gt;
MyOperation2(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; myValue);&lt;/font&gt;&lt;font size=2&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&gt;&gt;&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=dd494296-3fec-4770-b381-75f0a4e3fae5" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,dd494296-3fec-4770-b381-75f0a4e3fae5.aspx</comments>
      <category>.NET Framework</category>
      <category>WCF</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=86196baf-cdc6-4b81-952d-f7b0c9431d9b</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,86196baf-cdc6-4b81-952d-f7b0c9431d9b.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,86196baf-cdc6-4b81-952d-f7b0c9431d9b.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=86196baf-cdc6-4b81-952d-f7b0c9431d9b</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Before you try running a Console Application or Windows Service application that hosts
a WCF service with basicHttpBinding or wsHttpBinding, see <a href="http://msdn2.microsoft.com/en-us/library/ms733768.aspx">this
MSDN article about "Configuring HTTP and HTTPS"</a>. If you are WAS-hosted or Web
App-hosted, the urlacl entries are made on your behalf.
</p>
        <p>
You can view the current entries with "<font face="Courier New">netsh http show urlacl</font>".
To make the changes, you'll need to "Run as Administrator" when going into your Command
Prompt.
</p>
        <p>
I decided to use the following command: 
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <font face="Courier New" color="#000080">netsh http add urlacl url=http://+:8080/
user=\Everyone</font>
          </p>
        </blockquote>
        <p>
You should adjust the ports and/or path as necessary for your situation:
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <font face="Courier New" color="#000080">netsh http add urlacl url=http://+:8080/MyConsoleAppHostedService
user=DOMAIN\user</font>
          </p>
          <p>
            <font face="Courier New" color="#000080">netsh http add urlacl url=http://+:8091/MyWindowsServiceHostedService
user=\SYSTEM</font>
          </p>
        </blockquote>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=86196baf-cdc6-4b81-952d-f7b0c9431d9b" />
      </body>
      <title>Using WCF over HTTP or HTTPS on Vista</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,86196baf-cdc6-4b81-952d-f7b0c9431d9b.aspx</guid>
      <link>http://offroadcoder.com/2008/03/25/UsingWCFOverHTTPOrHTTPSOnVista.aspx</link>
      <pubDate>Tue, 25 Mar 2008 01:03:15 GMT</pubDate>
      <description>&lt;p&gt;
Before you try running a Console Application or Windows Service application that hosts
a WCF service with basicHttpBinding or wsHttpBinding, see &lt;a href="http://msdn2.microsoft.com/en-us/library/ms733768.aspx"&gt;this
MSDN article about "Configuring HTTP and HTTPS"&lt;/a&gt;. If you are WAS-hosted or Web
App-hosted, the urlacl entries are made on your behalf.
&lt;/p&gt;
&lt;p&gt;
You can view the current entries with "&lt;font face="Courier New"&gt;netsh http show urlacl&lt;/font&gt;".
To make the changes, you'll need to "Run as Administrator" when going into your Command
Prompt.
&lt;/p&gt;
&lt;p&gt;
I decided to use the following command: 
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;font face="Courier New" color=#000080&gt;netsh http add urlacl url=http://+:8080/ user=\Everyone&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
You should adjust the ports and/or path as necessary for your situation:
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;font face="Courier New" color=#000080&gt;netsh http add urlacl url=http://+:8080/MyConsoleAppHostedService
user=DOMAIN\user&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" color=#000080&gt;netsh http add urlacl url=http://+:8091/MyWindowsServiceHostedService
user=\SYSTEM&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=86196baf-cdc6-4b81-952d-f7b0c9431d9b" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,86196baf-cdc6-4b81-952d-f7b0c9431d9b.aspx</comments>
      <category>.NET Framework</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=91bc9016-1219-473d-83fb-04cf34706fd6</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,91bc9016-1219-473d-83fb-04cf34706fd6.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,91bc9016-1219-473d-83fb-04cf34706fd6.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=91bc9016-1219-473d-83fb-04cf34706fd6</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
WCF is seamless, powerful, and (YES) interoperable. Here is a quick walkthrough
detailing steps to call your legacy PHP web services from a WCF client. All of the
binding types and security options are, of course, not available. But for those of
you following the old "security through obscurity" model, this will work fine.
</p>
The procedure is just as simple as a WCF-WCF call: 
<ol><li>
Create client proxy 
</li><li>
Add client endpoint to your client config file 
</li><li>
Write your proxy-consuming client code</li></ol><p><strong>Create the client proxy:</strong></p><p>
Nusoap provides a similar UI when navigating to your PHP web service to that provided
by ASMX services. You can view the WSDL, and copy the URL for svcutil.exe.
</p><p><a href="http://gotjeep.net/Blogs/content/binary/phpservice2.png" target="_blank" alt="PHP Service : Click for full-size image"><img src="http://gotjeep.net/Blogs/content/binary/phpservice2.png" width="200" border="0" /></a><a href="http://gotjeep.net/Blogs/content/binary/phpservice3.png" target="_blank" alt="WSDL : Click for full-size image"><img src="http://gotjeep.net/Blogs/content/binary/phpservice3.png" width="200" border="0" /></a></p><p>
From the Visual Studio 2005 Command Prompt, type:
</p><p><font face="Courier New">svcutil &lt;url&gt; /out:&lt;name&gt;Proxy.cs /noconfig<br />
svcutil http://gotjeep.net/services/ApproachAngleService.php?wsdl /out:ApproachAngleServiceProxy.cs
/noconfig</font></p><p><font face="Courier New"><img src="http://gotjeep.net/Blogs/content/binary/proxy.png" border="0" /></font></p><p>
This generates a file named <em>ApproachAngleServiceProxy.cs</em>.
</p><div style="BORDER-RIGHT: #969894 1px solid; BORDER-TOP: #969894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #969894 1px solid; WIDTH: 831px; BORDER-BOTTOM: #969894 1px solid; HEIGHT: 200px"><div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    1</span> <span style="COLOR: green">//------------------------------------------------------------------------------</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    2</span> <span style="COLOR: green">//
&lt;auto-generated&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    3</span> <span style="COLOR: green">//   
This code was generated by a tool.</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    4</span> <span style="COLOR: green">//   
Runtime Version:2.0.50727.1433</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    5</span> <span style="COLOR: green">//</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    6</span> <span style="COLOR: green">//   
Changes to this file may cause incorrect behavior and will be lost if</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    7</span> <span style="COLOR: green">//   
the code is regenerated.</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    8</span> <span style="COLOR: green">//
&lt;/auto-generated&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    9</span> <span style="COLOR: green">//------------------------------------------------------------------------------</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   10</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   11</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   12</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   13</span> [System.CodeDom.Compiler.<span style="COLOR: #2b91af">GeneratedCodeAttribute</span>(<span style="COLOR: #a31515">"System.ServiceModel"</span>, <span style="COLOR: #a31515">"3.0.0.0"</span>)]
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   14</span> [System.ServiceModel.<span style="COLOR: #2b91af">ServiceContractAttribute</span>(Namespace=<span style="COLOR: #a31515">"http://www.gotjeep.net/tech"</span>,
ConfigurationName=<span style="COLOR: #a31515">"GotJeepApproachAngleCalculatorPortType"</span>)]
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   15</span> <span style="COLOR: blue">public</span><span style="COLOR: blue">interface</span><span style="COLOR: #2b91af">GotJeepApproachAngleCalculatorPortType</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   16</span> {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   17</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   18</span>     [System.ServiceModel.<span style="COLOR: #2b91af">OperationContractAttribute</span>(Action=<span style="COLOR: #a31515">"http://www.gotjeep.net/services/approachAngleService.php/CalculateApproachAngle"</span>,
ReplyAction=<span style="COLOR: #a31515">"*"</span>)]
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   19</span>     [System.ServiceModel.<span style="COLOR: #2b91af">XmlSerializerFormatAttribute</span>(Style=System.ServiceModel.<span style="COLOR: #2b91af">OperationFormatStyle</span>.Rpc,
Use=System.ServiceModel.<span style="COLOR: #2b91af">OperationFormatUse</span>.Encoded)]
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   20</span>     [<span style="COLOR: blue">return</span>:
System.ServiceModel.<span style="COLOR: #2b91af">MessageParameterAttribute</span>(Name=<span style="COLOR: #a31515">"return"</span>)]
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   21</span>     <span style="COLOR: blue">decimal</span> CalculateApproachAngle(<span style="COLOR: blue">decimal</span> height, <span style="COLOR: blue">decimal</span> diameter, <span style="COLOR: blue">decimal</span> distance);
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   22</span> }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   23</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   24</span> [System.CodeDom.Compiler.<span style="COLOR: #2b91af">GeneratedCodeAttribute</span>(<span style="COLOR: #a31515">"System.ServiceModel"</span>, <span style="COLOR: #a31515">"3.0.0.0"</span>)]
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   25</span> <span style="COLOR: blue">public</span><span style="COLOR: blue">interface</span><span style="COLOR: #2b91af">GotJeepApproachAngleCalculatorPortTypeChannel</span> : <span style="COLOR: #2b91af">GotJeepApproachAngleCalculatorPortType</span>,
System.ServiceModel.<span style="COLOR: #2b91af">IClientChannel</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   26</span> {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   27</span> }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   28</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   29</span> [System.Diagnostics.<span style="COLOR: #2b91af">DebuggerStepThroughAttribute</span>()]
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   30</span> [System.CodeDom.Compiler.<span style="COLOR: #2b91af">GeneratedCodeAttribute</span>(<span style="COLOR: #a31515">"System.ServiceModel"</span>, <span style="COLOR: #a31515">"3.0.0.0"</span>)]
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   31</span> <span style="COLOR: blue">public</span><span style="COLOR: blue">partial</span><span style="COLOR: blue">class</span><span style="COLOR: #2b91af">GotJeepApproachAngleCalculatorPortTypeClient</span> :
System.ServiceModel.<span style="COLOR: #2b91af">ClientBase</span>&lt;<span style="COLOR: #2b91af">GotJeepApproachAngleCalculatorPortType</span>&gt;, <span style="COLOR: #2b91af">GotJeepApproachAngleCalculatorPortType</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   32</span> {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   33</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   34</span>     <span style="COLOR: blue">public</span> GotJeepApproachAngleCalculatorPortTypeClient()
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   35</span>     {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   36</span>     }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   37</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   38</span>     <span style="COLOR: blue">public</span> GotJeepApproachAngleCalculatorPortTypeClient(<span style="COLOR: blue">string</span> endpointConfigurationName)
: 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   39</span>        
    <span style="COLOR: blue">base</span>(endpointConfigurationName)
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   40</span>     {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   41</span>     }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   42</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   43</span>     <span style="COLOR: blue">public</span> GotJeepApproachAngleCalculatorPortTypeClient(<span style="COLOR: blue">string</span> endpointConfigurationName, <span style="COLOR: blue">string</span> remoteAddress)
: 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   44</span>        
    <span style="COLOR: blue">base</span>(endpointConfigurationName,
remoteAddress)
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   45</span>     {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   46</span>     }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   47</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   48</span>     <span style="COLOR: blue">public</span> GotJeepApproachAngleCalculatorPortTypeClient(<span style="COLOR: blue">string</span> endpointConfigurationName,
System.ServiceModel.<span style="COLOR: #2b91af">EndpointAddress</span> remoteAddress)
: 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   49</span>        
    <span style="COLOR: blue">base</span>(endpointConfigurationName,
remoteAddress)
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   50</span>     {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   51</span>     }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   52</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   53</span>     <span style="COLOR: blue">public</span> GotJeepApproachAngleCalculatorPortTypeClient(System.ServiceModel.Channels.<span style="COLOR: #2b91af">Binding</span> binding,
System.ServiceModel.<span style="COLOR: #2b91af">EndpointAddress</span> remoteAddress)
: 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   54</span>        
    <span style="COLOR: blue">base</span>(binding, remoteAddress)
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   55</span>     {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   56</span>     }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   57</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   58</span>     <span style="COLOR: blue">public</span><span style="COLOR: blue">decimal</span> CalculateApproachAngle(<span style="COLOR: blue">decimal</span> height, <span style="COLOR: blue">decimal</span> diameter, <span style="COLOR: blue">decimal</span> distance)
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   59</span>     {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   60</span>         <span style="COLOR: blue">return</span><span style="COLOR: blue">base</span>.Channel.CalculateApproachAngle(height,
diameter, distance);
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   61</span>     }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   62</span> }
</p></div><!--EndFragment--></div><p><strong></strong> 
</p><p><strong>Add client endpoint to your config file:</strong></p><p>
You have the option of letting svcutil create your config file or using "Generate
Service Reference", but I prefer to avoid the extra 20+ lines of config file defaults
included by svcutil. It's not hard to write it yourself, and it ensures a much more
readable config file.
</p><div style="BORDER-RIGHT: #969894 1px solid; BORDER-TOP: #969894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #969894 1px solid; WIDTH: 777px; BORDER-BOTTOM: #969894 1px solid; HEIGHT: 200px"><div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    1</span> <span style="COLOR: blue">&lt;?</span><span style="COLOR: #a31515">xml</span><span style="COLOR: blue"></span><span style="COLOR: red">version</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">1.0</span>"<span style="COLOR: blue"></span><span style="COLOR: red">encoding</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">utf-8</span>"<span style="COLOR: blue">?&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    2</span> <span style="COLOR: blue">&lt;</span><span style="COLOR: #a31515">configuration</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    3</span> <span style="COLOR: blue"> 
  &lt;</span><span style="COLOR: #a31515">system.serviceModel</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    4</span> <span style="COLOR: blue"> 
      &lt;</span><span style="COLOR: #a31515">bindings</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    5</span> <span style="COLOR: blue"> 
          &lt;</span><span style="COLOR: #a31515">basicHttpBinding</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    6</span> <span style="COLOR: blue"> 
            &lt;</span><span style="COLOR: #a31515">binding</span><span style="COLOR: blue"></span><span style="COLOR: red">name</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">GotJeepApproachAngleCalculatorBinding</span>"<span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    7</span> <span style="COLOR: blue"> 
              &lt;</span><span style="COLOR: #a31515">security</span><span style="COLOR: blue"></span><span style="COLOR: red">mode</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">None</span>"<span style="COLOR: blue">/&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    8</span> <span style="COLOR: blue"> 
            &lt;/</span><span style="COLOR: #a31515">binding</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    9</span> <span style="COLOR: blue"> 
          &lt;/</span><span style="COLOR: #a31515">basicHttpBinding</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   10</span> <span style="COLOR: blue"> 
      &lt;/</span><span style="COLOR: #a31515">bindings</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   11</span> <span style="COLOR: blue"> 
      &lt;</span><span style="COLOR: #a31515">client</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   12</span> <span style="COLOR: blue"> 
          &lt;</span><span style="COLOR: #a31515">endpoint</span><span style="COLOR: blue"></span><span style="COLOR: red">address</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">http://www.gotjeep.net/services/approachAngleService.php</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   13</span> <span style="COLOR: blue"> 
              </span><span style="COLOR: red">binding</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">basicHttpBinding</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   14</span> <span style="COLOR: blue"> 
              </span><span style="COLOR: red">bindingConfiguration</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">GotJeepApproachAngleCalculatorBinding</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   15</span> <span style="COLOR: blue"> 
              </span><span style="COLOR: red">contract</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">GotJeepApproachAngleCalculatorPortType</span>"
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   16</span> <span style="COLOR: blue"> 
              </span><span style="COLOR: red">name</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">GotJeepApproachAngleCalculatorPort</span>"<span style="COLOR: blue"> /&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   17</span> <span style="COLOR: blue"> 
      &lt;/</span><span style="COLOR: #a31515">client</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   18</span> <span style="COLOR: blue"> 
  &lt;/</span><span style="COLOR: #a31515">system.serviceModel</span><span style="COLOR: blue">&gt;</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   19</span> <span style="COLOR: blue">&lt;/</span><span style="COLOR: #a31515">configuration</span><span style="COLOR: blue">&gt;</span></p></div><!--EndFragment--></div><p><strong></strong> 
</p><p><strong>Write the client code:</strong></p><div style="BORDER-RIGHT: #969894 1px solid; BORDER-TOP: #969894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #969894 1px solid; WIDTH: 950px; BORDER-BOTTOM: #969894 1px solid; HEIGHT: 200px"><pre><font color="#0000ff" size="2"><div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    1</span> <span style="COLOR: blue">using</span> System;
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    2</span> 
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    3</span> <span style="COLOR: blue">namespace</span> Client
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    4</span> {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    5</span>     <span style="COLOR: blue">class</span><span style="COLOR: #2b91af">Program</span></p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    6</span>    
{
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    7</span>    
    <span style="COLOR: blue">static</span><span style="COLOR: blue">void</span> Main(<span style="COLOR: blue">string</span>[]
args)
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    8</span>    
    {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">    9</span>    
        <span style="COLOR: blue">using</span> (<span style="COLOR: #2b91af">GotJeepApproachAngleCalculatorPortTypeClient</span> proxy
=
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   10</span>        
        <span style="COLOR: blue">new</span><span style="COLOR: #2b91af">GotJeepApproachAngleCalculatorPortTypeClient</span>())
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   11</span>        
    {
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   12</span>        
        <span style="COLOR: blue">decimal</span> result
= proxy.CalculateApproachAngle(25.6m, 33.2m, 17.75m);
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   13</span>        
        <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">"decimal
result = proxy.CalculateApproachAngle(25.6m, 33.2m, 17.75m);"</span>);
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   14</span>        
        <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">"result
= "</span> + result.ToString(<span style="COLOR: #a31515">"0.00"</span>));
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   15</span>        
    }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   16</span>        
}
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   17</span>     }
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   18</span> }
</p></div><!--EndFragment--></font><font size="2"></font></pre></div><p><strong></strong> 
</p><p><strong>Check it out:</strong></p><p>
A request-reply call between WCF and a Nusoap PHP web service.
</p><p><img src="http://gotjeep.net/Blogs/content/binary/client.png" border="0" /></p><img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=91bc9016-1219-473d-83fb-04cf34706fd6" /></body>
      <title>Calling your Nusoap PHP web service from WCF</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,91bc9016-1219-473d-83fb-04cf34706fd6.aspx</guid>
      <link>http://offroadcoder.com/2008/03/23/CallingYourNusoapPHPWebServiceFromWCF.aspx</link>
      <pubDate>Sun, 23 Mar 2008 02:25:00 GMT</pubDate>
      <description>&lt;p&gt;
WCF is seamless, powerful, and (YES)&amp;nbsp;interoperable. Here is a quick walkthrough
detailing steps to call your legacy PHP web services from a WCF client. All of the
binding types and security options are, of course, not available. But for those of
you following the old "security through obscurity" model, this will work fine.
&lt;/p&gt;
The procedure is just as simple as a WCF-WCF call: 
&lt;ol&gt;
&lt;li&gt;
Create client proxy 
&lt;li&gt;
Add client endpoint to your client config file 
&lt;li&gt;
Write your proxy-consuming client code&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;Create the client proxy:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Nusoap provides a similar UI when navigating to your PHP web service to that provided
by ASMX services. You can view the WSDL, and copy the URL for svcutil.exe.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://gotjeep.net/Blogs/content/binary/phpservice2.png" target=_blank alt="PHP Service : Click for full-size image"&gt;&lt;img src="http://gotjeep.net/Blogs/content/binary/phpservice2.png" width=200 border=0&gt;&lt;/a&gt;&lt;a href="http://gotjeep.net/Blogs/content/binary/phpservice3.png" target=_blank alt="WSDL : Click for full-size image"&gt;&lt;img src="http://gotjeep.net/Blogs/content/binary/phpservice3.png" width=200 border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
From the Visual Studio 2005 Command Prompt, type:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;svcutil &amp;lt;url&amp;gt; /out:&amp;lt;name&amp;gt;Proxy.cs /noconfig&lt;br&gt;
svcutil http://gotjeep.net/services/ApproachAngleService.php?wsdl /out:ApproachAngleServiceProxy.cs
/noconfig&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&lt;img src="http://gotjeep.net/Blogs/content/binary/proxy.png" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
This generates a file named &lt;em&gt;ApproachAngleServiceProxy.cs&lt;/em&gt;.
&lt;/p&gt;
&lt;div style="BORDER-RIGHT: #969894 1px solid; BORDER-TOP: #969894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #969894 1px solid; WIDTH: 831px; BORDER-BOTTOM: #969894 1px solid; HEIGHT: 200px"&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//------------------------------------------------------------------------------&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//
&amp;lt;auto-generated&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;
This code was generated by a tool.&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;
Runtime Version:2.0.50727.1433&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;
Changes to this file may cause incorrect behavior and will be lost if&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;
the code is regenerated.&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//
&amp;lt;/auto-generated&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: green"&gt;//------------------------------------------------------------------------------&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;[System.CodeDom.Compiler.&lt;span style="COLOR: #2b91af"&gt;GeneratedCodeAttribute&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"System.ServiceModel"&lt;/span&gt;, &lt;span style="COLOR: #a31515"&gt;"3.0.0.0"&lt;/span&gt;)]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;[System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;ServiceContractAttribute&lt;/span&gt;(Namespace=&lt;span style="COLOR: #a31515"&gt;"http://www.gotjeep.net/tech"&lt;/span&gt;,
ConfigurationName=&lt;span style="COLOR: #a31515"&gt;"GotJeepApproachAngleCalculatorPortType"&lt;/span&gt;)]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;GotJeepApproachAngleCalculatorPortType&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;OperationContractAttribute&lt;/span&gt;(Action=&lt;span style="COLOR: #a31515"&gt;"http://www.gotjeep.net/services/approachAngleService.php/CalculateApproachAngle"&lt;/span&gt;,
ReplyAction=&lt;span style="COLOR: #a31515"&gt;"*"&lt;/span&gt;)]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;XmlSerializerFormatAttribute&lt;/span&gt;(Style=System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;OperationFormatStyle&lt;/span&gt;.Rpc,
Use=System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;OperationFormatUse&lt;/span&gt;.Encoded)]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="COLOR: blue"&gt;return&lt;/span&gt;:
System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;MessageParameterAttribute&lt;/span&gt;(Name=&lt;span style="COLOR: #a31515"&gt;"return"&lt;/span&gt;)]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt; CalculateApproachAngle(&lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt; height, &lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt; diameter, &lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt; distance);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;}
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;[System.CodeDom.Compiler.&lt;span style="COLOR: #2b91af"&gt;GeneratedCodeAttribute&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"System.ServiceModel"&lt;/span&gt;, &lt;span style="COLOR: #a31515"&gt;"3.0.0.0"&lt;/span&gt;)]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;GotJeepApproachAngleCalculatorPortTypeChannel&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;GotJeepApproachAngleCalculatorPortType&lt;/span&gt;,
System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;IClientChannel&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;}
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;[System.Diagnostics.&lt;span style="COLOR: #2b91af"&gt;DebuggerStepThroughAttribute&lt;/span&gt;()]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;[System.CodeDom.Compiler.&lt;span style="COLOR: #2b91af"&gt;GeneratedCodeAttribute&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"System.ServiceModel"&lt;/span&gt;, &lt;span style="COLOR: #a31515"&gt;"3.0.0.0"&lt;/span&gt;)]
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;partial&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;GotJeepApproachAngleCalculatorPortTypeClient&lt;/span&gt; :
System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;ClientBase&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;GotJeepApproachAngleCalculatorPortType&lt;/span&gt;&amp;gt;, &lt;span style="COLOR: #2b91af"&gt;GotJeepApproachAngleCalculatorPortType&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; GotJeepApproachAngleCalculatorPortTypeClient()
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; GotJeepApproachAngleCalculatorPortTypeClient(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; endpointConfigurationName)
: 
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;(endpointConfigurationName)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; GotJeepApproachAngleCalculatorPortTypeClient(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; endpointConfigurationName, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; remoteAddress)
: 
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;(endpointConfigurationName,
remoteAddress)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; GotJeepApproachAngleCalculatorPortTypeClient(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; endpointConfigurationName,
System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;EndpointAddress&lt;/span&gt; remoteAddress)
: 
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;(endpointConfigurationName,
remoteAddress)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; GotJeepApproachAngleCalculatorPortTypeClient(System.ServiceModel.Channels.&lt;span style="COLOR: #2b91af"&gt;Binding&lt;/span&gt; binding,
System.ServiceModel.&lt;span style="COLOR: #2b91af"&gt;EndpointAddress&lt;/span&gt; remoteAddress)
: 
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;(binding, remoteAddress)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt; CalculateApproachAngle(&lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt; height, &lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt; diameter, &lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt; distance)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.Channel.CalculateApproachAngle(height,
diameter, distance);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/span&gt;&amp;nbsp;}
&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Add client endpoint to your config file:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
You have the option of letting svcutil create your config file or using "Generate
Service Reference", but I prefer to avoid the extra 20+ lines of config file defaults
included by svcutil. It's not hard to write it yourself, and it ensures a much more
readable config file.
&lt;/p&gt;
&lt;div style="BORDER-RIGHT: #969894 1px solid; BORDER-TOP: #969894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #969894 1px solid; WIDTH: 777px; BORDER-BOTTOM: #969894 1px solid; HEIGHT: 200px"&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;xml&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;version&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;1.0&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;encoding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;?&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;GotJeepApproachAngleCalculatorBinding&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;security&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mode&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;None&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;bindings&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;client&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;http://www.gotjeep.net/services/approachAngleService.php&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;basicHttpBinding&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;GotJeepApproachAngleCalculatorBinding&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;GotJeepApproachAngleCalculatorPortType&lt;/span&gt;"
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;GotJeepApproachAngleCalculatorPort&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;client&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;nbsp;
&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Write the client code:&lt;/strong&gt;
&lt;/p&gt;
&lt;div style="BORDER-RIGHT: #969894 1px solid; BORDER-TOP: #969894 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #969894 1px solid; WIDTH: 950px; BORDER-BOTTOM: #969894 1px solid; HEIGHT: 200px"&gt;&lt;pre&gt;&lt;font color=#0000ff size=2&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; Client
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Program&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[]
args)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;GotJeepApproachAngleCalculatorPortTypeClient&lt;/span&gt; proxy
=
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&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; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;GotJeepApproachAngleCalculatorPortTypeClient&lt;/span&gt;())
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&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; &lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt; result
= proxy.CalculateApproachAngle(25.6m, 33.2m, 17.75m);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"decimal
result = proxy.CalculateApproachAngle(25.6m, 33.2m, 17.75m);"&lt;/span&gt;);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"result
= "&lt;/span&gt; + result.ToString(&lt;span style="COLOR: #a31515"&gt;"0.00"&lt;/span&gt;));
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;}
&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Check it out:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
A request-reply call between WCF and a Nusoap PHP web service.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://gotjeep.net/Blogs/content/binary/client.png" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=91bc9016-1219-473d-83fb-04cf34706fd6" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,91bc9016-1219-473d-83fb-04cf34706fd6.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>WCF</category>
    </item>
  </channel>
</rss>