<?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 - Dev Tools</title>
    <link>http://offroadcoder.com/</link>
    <description>making the hard line look easy</description>
    <language>en-us</language>
    <copyright>Scott Klueppel</copyright>
    <lastBuildDate>Tue, 06 Apr 2010 02:42:08 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=bae3db7f-fffb-4004-a249-c9867f72eaa8</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,bae3db7f-fffb-4004-a249-c9867f72eaa8.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,bae3db7f-fffb-4004-a249-c9867f72eaa8.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bae3db7f-fffb-4004-a249-c9867f72eaa8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve been using the full desktop version for only a few days, but already love this
tool! In just a matter of minutes, I am able to draw a mockup for a screen and start
getting feedback. Here is a sample, a CodePlex-like UI, that took less than five minutes.
</p>
        <p>
 <a href="http://offroadcoder.com/content/binary/BalsamiqMockupsforDesktop_13F31/CodePlex.png"><img title="CodePlex" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="540" alt="CodePlex" src="http://offroadcoder.com/content/binary/BalsamiqMockupsforDesktop_13F31/CodePlex_thumb.png" width="740" border="0" /></a></p>
        <p>
Creating this mockup goes as follows:
</p>
        <ol>
          <li>
Drag a browser element onto the design surface, stretch it and type a URL and title 
</li>
          <li>
Using the “Quick Add” box, type “tab” &lt;Enter&gt; to add the tab control. Type “Home,
Downloads, Documentation, Discussions, etc.” and &lt;Enter&gt; again. Reposition the
tab element. 
</li>
          <li>
Using the “Quick Add” box, type “link” &lt;Enter&gt; twice to create a link bar for
the top right and another link bar to be positioned below the tabs. 
</li>
          <li>
Continue using the “Quick Add” box to add textboxes, label text, search boxes, images,
subtitle text, links, and data grids. Type values and reposition.</li>
        </ol>
        <p>
This tool has a few features I find to be more compelling than the imitators:
</p>
        <ol>
          <li>
            <strong>Speed</strong> – Being able to create and recreate mockups with such speed
and usefulness really promotes a good prototyping/review process. 
</li>
          <li>
            <strong>Look and Feel</strong> – Having an obvious “rough draft” look and feel gets
your customer thinking about usability and element placement and less about colors,
styles, images, copy, fonts, etc. This makes for a very productive meeting involving
customers in “the task at hand” and nothing more. 
</li>
          <li>
            <strong>Demo mode</strong> – Similar to MS SketchFlow, you can assign links to buttons
that can simulate events. When entering full-screen demo mode, you can click on these
links and move between your mockups as if it were a live site. It also has a large
pointer (arrow) and always points to the center, staying out of the way. 
</li>
          <li>
            <strong>Good user community</strong> – tons of free extensions like wizards, toolbars,
reporting chart elements, and plenty of iPhone/iPad junk for “those people”. I’m a
PC. 
</li>
          <li>
            <strong>Updates and Upgrades</strong> – weekly updates based on user feedback and
perpetual free upgrades. My emails have been answered within 12 hours, which is quite
impressive considering the 6+ hour time difference.</li>
        </ol>
        <p>
This is free to try on the web, but you cannot save or export the images. You can,
however, export the PNG with a watermark. Desktop version gives you some nice added
features like copy/paste, undo, and demo mode. 
</p>
        <p>
          <font size="2">
            <em>
              <strong>Try it out, buy it, and love it!</strong>
            </em>
          </font>
        </p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=bae3db7f-fffb-4004-a249-c9867f72eaa8" />
      </body>
      <title>Balsamiq Mockups for Desktop</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,bae3db7f-fffb-4004-a249-c9867f72eaa8.aspx</guid>
      <link>http://offroadcoder.com/2010/04/06/BalsamiqMockupsForDesktop.aspx</link>
      <pubDate>Tue, 06 Apr 2010 02:42:08 GMT</pubDate>
      <description>&lt;p&gt;
I’ve been using the full desktop version for only a few days, but already love this
tool! In just a matter of minutes, I am able to draw a mockup for a screen and start
getting feedback. Here is a sample, a CodePlex-like UI, that took less than five minutes.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://offroadcoder.com/content/binary/BalsamiqMockupsforDesktop_13F31/CodePlex.png"&gt;&lt;img title="CodePlex" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="540" alt="CodePlex" src="http://offroadcoder.com/content/binary/BalsamiqMockupsforDesktop_13F31/CodePlex_thumb.png" width="740" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Creating this mockup goes as follows:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Drag a browser element onto the design surface, stretch it and type a URL and title 
&lt;li&gt;
Using the “Quick Add” box, type “tab” &amp;lt;Enter&amp;gt; to add the tab control. Type “Home,
Downloads, Documentation, Discussions, etc.” and &amp;lt;Enter&amp;gt; again. Reposition the
tab element. 
&lt;li&gt;
Using the “Quick Add” box, type “link” &amp;lt;Enter&amp;gt; twice to create a link bar for
the top right and another link bar to be positioned below the tabs. 
&lt;li&gt;
Continue using the “Quick Add” box to add textboxes, label text, search boxes, images,
subtitle text, links, and data grids. Type values and reposition.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
This tool has a few features I find to be more compelling than the imitators:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt; – Being able to create and recreate mockups with such speed
and usefulness really promotes a good prototyping/review process. 
&lt;li&gt;
&lt;strong&gt;Look and Feel&lt;/strong&gt; – Having an obvious “rough draft” look and feel gets
your customer thinking about usability and element placement and less about colors,
styles, images, copy, fonts, etc. This makes for a very productive meeting involving
customers in “the task at hand” and nothing more. 
&lt;li&gt;
&lt;strong&gt;Demo mode&lt;/strong&gt; – Similar to MS SketchFlow, you can assign links to buttons
that can simulate events. When entering full-screen demo mode, you can click on these
links and move between your mockups as if it were a live site. It also has a large
pointer (arrow) and always points to the center, staying out of the way. 
&lt;li&gt;
&lt;strong&gt;Good user community&lt;/strong&gt; – tons of free extensions like wizards, toolbars,
reporting chart elements, and plenty of iPhone/iPad junk for “those people”. I’m a
PC. 
&lt;li&gt;
&lt;strong&gt;Updates and Upgrades&lt;/strong&gt; – weekly updates based on user feedback and
perpetual free upgrades. My emails have been answered within 12 hours, which is quite
impressive considering the 6+ hour time difference.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
This is free to try on the web, but you cannot save or export the images. You can,
however, export the PNG with a watermark. Desktop version gives you some nice added
features like copy/paste, undo, and demo mode. 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;&lt;em&gt;&lt;strong&gt;Try it out, buy it, and love it!&lt;/strong&gt;&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=bae3db7f-fffb-4004-a249-c9867f72eaa8" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,bae3db7f-fffb-4004-a249-c9867f72eaa8.aspx</comments>
      <category>Dev Tools</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=d510b5cf-bf4e-4671-aa48-9fd3263b40ef</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,d510b5cf-bf4e-4671-aa48-9fd3263b40ef.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,d510b5cf-bf4e-4671-aa48-9fd3263b40ef.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d510b5cf-bf4e-4671-aa48-9fd3263b40ef</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Check out <a href="http://www.balsamiq.com" target="_blank">http://www.balsamiq.com</a> to
see one of the best mockup tools ever created. I just started using it and it has
already paid off. I have made several mock-ups in minutes that cut my development
time in half. Having the ability to demo a new UI to users and change it during the
conversation is priceless.
</p>
        <p>
More to come… samples too!
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=d510b5cf-bf4e-4671-aa48-9fd3263b40ef" />
      </body>
      <title>Balsamiq Mockups</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,d510b5cf-bf4e-4671-aa48-9fd3263b40ef.aspx</guid>
      <link>http://offroadcoder.com/2010/04/02/BalsamiqMockups.aspx</link>
      <pubDate>Fri, 02 Apr 2010 00:28:57 GMT</pubDate>
      <description>&lt;p&gt;
Check out &lt;a href="http://www.balsamiq.com" target="_blank"&gt;http://www.balsamiq.com&lt;/a&gt; to
see one of the best mockup tools ever created. I just started using it and it has
already paid off. I have made several mock-ups in minutes that cut my development
time in half. Having the ability to demo a new UI to users and change it during the
conversation is priceless.
&lt;/p&gt;
&lt;p&gt;
More to come… samples too!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=d510b5cf-bf4e-4671-aa48-9fd3263b40ef" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,d510b5cf-bf4e-4671-aa48-9fd3263b40ef.aspx</comments>
      <category>Dev Tools</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=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=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=3deae2d5-50a2-4435-ab7c-e9d1e240e8ff</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,3deae2d5-50a2-4435-ab7c-e9d1e240e8ff.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,3deae2d5-50a2-4435-ab7c-e9d1e240e8ff.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3deae2d5-50a2-4435-ab7c-e9d1e240e8ff</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have been using ScottGu's Visual Studio 2008 theme for the last few weeks and love
it. You can see it <a href="http://www.scottgu.com/blogposts/mvc3announce/step11.png">here</a> and
download it <a href="http://www.scottgu.com/blogposts/aprilmvc/scottgu-dark.zip">here</a>.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=3deae2d5-50a2-4435-ab7c-e9d1e240e8ff" />
      </body>
      <title>ScottGu VS 2008 Theme</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,3deae2d5-50a2-4435-ab7c-e9d1e240e8ff.aspx</guid>
      <link>http://offroadcoder.com/2008/05/30/ScottGuVS2008Theme.aspx</link>
      <pubDate>Fri, 30 May 2008 02:21:53 GMT</pubDate>
      <description>
		&lt;p&gt;
I have been using ScottGu's Visual Studio 2008 theme for the last few weeks and love
it. You can see it &lt;a href="http://www.scottgu.com/blogposts/mvc3announce/step11.png"&gt;here&lt;/a&gt; and
download it &lt;a href="http://www.scottgu.com/blogposts/aprilmvc/scottgu-dark.zip"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=3deae2d5-50a2-4435-ab7c-e9d1e240e8ff" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,3deae2d5-50a2-4435-ab7c-e9d1e240e8ff.aspx</comments>
      <category>Dev Tools</category>
      <category>Visual Studio</category>
    </item>
  </channel>
</rss>