<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ASP.NET Debugging : ASP.NET</title><link>http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx</link><description>Tags: ASP.NET</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Impersonation, WCF, and making updates to a database</title><link>http://blogs.msdn.com/tom/archive/2009/09/17/impersonation-wcf-and-making-updates-to-a-database.aspx</link><pubDate>Thu, 17 Sep 2009 22:14:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9896465</guid><dc:creator>Tom</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/tom/comments/9896465.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9896465</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9896465</wfw:comment><description>&lt;p&gt;I was troubleshooting a problem with WCF where the updates to a remote database were failing.&amp;#160; The reason for the failure was found pretty quickly to be delegation.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;For general impersonation questions in regards to WCF, there is lots of great information found &lt;a href="http://msdn.microsoft.com/en-us/library/ms730088.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For my situation, the problem was that the ASP.NET application that was calling the WCF service was impersonating and I couldn’t enable delegation in my environment.&amp;#160; So the connection to SQL failed.&amp;#160; There are a number of ways to solve this problem, but some have more problems then others.&lt;/p&gt;  &lt;h3&gt;Fix #1&lt;/h3&gt;  &lt;p&gt;The easiest way is the add a User ID and Password to the web.config file.&amp;#160; But then you have to worry about updating that if the password expires and also the security of having the password in the config file.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Note: You can add the password to the registry following &lt;a href="http://support.microsoft.com/kb/329290"&gt;KB329290&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Fix #2&lt;/h3&gt;  &lt;p&gt;Another option would be to impersonate a given user on the network that has permission and use that when you are making the calls to the database.&amp;#160; You can follow the “Impersonate a Specific User in Code” section of &lt;a href="http://support.microsoft.com/kb/306158"&gt;KB306158&lt;/a&gt; for that.&amp;#160; This also has the problem of passwords expiring and that the password is stored in code, but it isn’t in a config file anymore.&lt;/p&gt;  &lt;h3&gt;Fix #3&lt;/h3&gt;  &lt;p&gt;The one I ended up using was this one.&amp;#160; In my case, the IIS Worker Process was already running under a network account that could assess the database.&amp;#160; So I just needed a way to get rid of the impersonation that the process was running under, do the database work, and then impersonate again.&amp;#160; The key was to do the following:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;WindowsImpersonationContext wic = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    wic = WindowsIdentity.Impersonate(IntPtr.Zero); &lt;span style="color: #008000"&gt;// revert to self&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// Do database work here&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;finally&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (wic != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        wic.Undo(); &lt;span style="color: #008000"&gt;// resume impersonating&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This will revert to self, let the database code run and then continue impersonating after that is done.&lt;/p&gt;

&lt;p&gt;With this code, I don’t have to store any passwords in my code or config files.&amp;#160; And everything will work correctly.&amp;#160; The only drawback is that all database work is going through a single account and so on the database side, you can’t do auditing by users to see what they are doing.&amp;#160; But in my application, I am already logging information into the database so there would be no need to have that kind of information.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9896465" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Debugging .NET apps for .NET 4.0</title><link>http://blogs.msdn.com/tom/archive/2009/09/02/debugging-net-apps-for-net-4-0.aspx</link><pubDate>Wed, 02 Sep 2009 19:45:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9890471</guid><dc:creator>Tom</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/tom/comments/9890471.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9890471</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9890471</wfw:comment><description>&lt;p&gt;With Visual Studio 2010 and .NET 4.0 getting ready to be shipped sometime in the next year, I wanted to see what were peoples ideas for how to debug applications that were written with them.&amp;#160; Are you happy in production with what you are currently doing?&amp;#160; Do you use SOS.dll to troubleshoot problems?&lt;/p&gt;  &lt;h3&gt;SOS&lt;/h3&gt;  &lt;p&gt;The main place I am really interested in is production debugging.&amp;#160; Is SOS a sufficient tool to get the data that you need?&amp;#160; If you had another version of SOS for .NET 4.0, would you be happy with the features it has or would you want something more?&lt;/p&gt;  &lt;h3&gt;Debugger&lt;/h3&gt;  &lt;p&gt;I understand that using a typical debugger can be very difficult for people.&amp;#160; If you don’t know what you are looking at, it can be very difficult to understand what is a problem and what is normal.&amp;#160; It is also very difficult to see typical problems.&amp;#160; For example, if you know your program is crashing due to running out of memory, what do you do to see what is taking up memory?&amp;#160; How do you tell if it is fragmentation?&amp;#160; What types of fragmentation are there that you would need to look for?&lt;/p&gt;  &lt;p&gt;I wanted to see what the interest is in a different way of looking at the data, something more along the lines of &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&amp;amp;displaylang=en"&gt;DebugDiag&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Opinions&lt;/h3&gt;  &lt;p&gt;I’d love to hear your thoughts.&amp;#160; Let me know!&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9890471" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/SOS/default.aspx">SOS</category></item><item><title>WCF, Silverlight, and SharePoint… Oh my!</title><link>http://blogs.msdn.com/tom/archive/2009/08/31/wcf-silverlight-and-sharepoint-oh-my.aspx</link><pubDate>Mon, 31 Aug 2009 22:33:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9889490</guid><dc:creator>Tom</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/tom/comments/9889490.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9889490</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9889490</wfw:comment><description>&lt;p&gt;I was recently working on a project and needed to have Silverlight make a WCF call.&amp;#160; That is pretty straight forward until you place the Silverlight code inside SharePoint and want it to call a WCF that is also inside SharePoint.&lt;/p&gt;  &lt;p&gt;The first problem that I had to solve was getting Silverlight to be able to call the WCF correctly.&amp;#160; Since in Visual Studio when you make the connection, it will have the local server for the path.&amp;#160; Like &lt;a href="http://localhost:95559/MyService.svc"&gt;http://localhost:95559/MyService.svc&lt;/a&gt; and for SharePoint I wanted it to point to the local server’s name and in the _layouts directory.&amp;#160; Luckily I came across the following blog that helped with getting that to work: &lt;a title="http://weblogs.asp.net/manishdalal/archive/2009/02/23/silverlight-servicereferences-clientconfig-alternatives.aspx" href="http://weblogs.asp.net/manishdalal/archive/2009/02/23/silverlight-servicereferences-clientconfig-alternatives.aspx"&gt;Silverlight ServiceReferences.ClientConfig Alternatives&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The only change I had to make was to the BasicHttpBinding:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; BasicHttpBinding binding = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; BasicHttpBinding(&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;             Application.Current.Host.Source.Scheme.Equals(&lt;span style="color: #006080"&gt;&amp;quot;https&amp;quot;&lt;/span&gt;, StringComparison.InvariantCultureIgnoreCase) &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;             ? BasicHttpSecurityMode.Transport : BasicHttpSecurityMode.TransportCredentialOnly);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Then I had to figure out how to get WCF hosted in SharePoint correctly.&amp;#160; For that, I turned to this post: &lt;a title="http://blogs.msdn.com/gzunino/archive/2007/09/17/hosting-a-wcf-service-in-windows-sharepoint-services-v3-0.aspx" href="http://blogs.msdn.com/gzunino/archive/2007/09/17/hosting-a-wcf-service-in-windows-sharepoint-services-v3-0.aspx"&gt;Hosting a WCF service in Windows Sharepoint Services v3.0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I now had a httpModule that would handle the *.svc requests that start with a ~.&amp;#160; That is important to make sure because you will get called again without the ~ so make sure you check for that before removing the first character.&amp;#160; I also had Silverlight setup where it could call the SharePoint machine regardless of what Visual Studio wanted to do.&amp;#160; I followed the “Dynamic Configuration” setup.&lt;/p&gt;

&lt;p&gt;When I had this setup, I then got problems still.&amp;#160; The only way I could see the problem was running something like &lt;a title="Network Monitor" href="http://blogs.technet.com/netmon/"&gt;Network Monitor&lt;/a&gt; or &lt;a title="http://projects.nikhilk.net/WebDevHelper/" href="http://projects.nikhilk.net/WebDevHelper/"&gt;Web Development Helper&lt;/a&gt;.&amp;#160; In there I saw a 500 error being returned from the server.&amp;#160; I attached a debugger and saw that it was giving me this message:&lt;/p&gt;

&lt;p&gt;Security settings for this service require ‘Anonymous’ Authentication but it is not enabled for the IIS application that hosts this service.&lt;/p&gt;

&lt;p&gt;From this error, I realized that WCF uses anonymous by default.&amp;#160; So I went into my web.config file and changed the binding to support Windows:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;bindings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;binding&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;MyBinding&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;security&lt;/span&gt; &lt;span style="color: #ff0000"&gt;mode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;TransportCredentialOnly&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;transport&lt;/span&gt; &lt;span style="color: #ff0000"&gt;clientCredentialType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Windows&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;security&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;binding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;bindings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Then you just add a bindingConfiguration=”MyBinding” on your service endpoint.&lt;/p&gt;

&lt;p&gt;After I made that change, I ran it again and this time I got the following error:&lt;/p&gt;

&lt;p&gt;Security settings for this service require Windows Authentication but it is not enabled for the IIS application that hosts this service.&lt;/p&gt;

&lt;p&gt;So I changed my binding to:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;bindings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;binding&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;security&lt;/span&gt; &lt;span style="color: #ff0000"&gt;mode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;TransportCredentialOnly&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;transport&lt;/span&gt; &lt;span style="color: #ff0000"&gt;clientCredentialType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Ntlm&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;security&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;binding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;bindings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;Note: If you have a ”mex” endpoint you may get another error about ‘anonymous’ because that uses anonymous by default.&amp;#160; If you do, you can delete the mex endpoint unless you need discoverability.&amp;#160; Then you will need to remove anonymous from that as well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After making these changes, Silverlight was able to call back into the ASP.NET project that it was loaded from and call a WCF service that was running inside SharePoint.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9889490" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/tom/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/tom/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Developing for the Clouds</title><link>http://blogs.msdn.com/tom/archive/2009/06/18/developing-for-the-clouds.aspx</link><pubDate>Thu, 18 Jun 2009 18:33:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9776418</guid><dc:creator>Tom</dc:creator><slash:comments>21</slash:comments><comments>http://blogs.msdn.com/tom/comments/9776418.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9776418</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9776418</wfw:comment><description>&lt;p&gt;I wanted to start a conversation with everyone on the thoughts around Cloud Computing.&amp;#160; I have been using &lt;a href="http://www.azure.com"&gt;Azure&lt;/a&gt; for a while now and I have found some interesting things out about it.&lt;/p&gt;  &lt;p&gt;Before I start talking about those things though, I wanted to see who was planning on using this technology or who is already using it.&amp;#160; This would include other Cloud solutions as well.&lt;/p&gt;  &lt;p&gt;If you are, what are you planning to do in the Cloud?&amp;#160; How are you going about setting up testing, development, maintaining, monitoring in the Cloud?&lt;/p&gt;  &lt;p&gt;I think that Cloud Computing is the future in a lot of ways and feel like things are going to change in a fundamental way in the not to distant future because of Cloud Computing.&amp;#160; Do you agree?&lt;/p&gt;  &lt;p&gt;Please keep in mind that I am not saying that Cloud Computing is a whole new way methodology, but I do think it will enable scenarios that weren’t possible before and will allow us to push the envelope of what we are capable of doing with a computer.&lt;/p&gt;  &lt;p&gt;I look forward to hearing back from you and talking more about Azure and Cloud Computing.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9776418" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/tom/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Adventures with Silverlight 3.0 and SharePoint – Part 2</title><link>http://blogs.msdn.com/tom/archive/2009/06/15/adventures-with-silverlight-3-0-and-sharepoint-part-2.aspx</link><pubDate>Mon, 15 Jun 2009 20:02:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9753887</guid><dc:creator>Tom</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/tom/comments/9753887.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9753887</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9753887</wfw:comment><description>&lt;p&gt;Just a quick update on this.&amp;#160; I had to make a few changes to my site and I now have it working!&lt;/p&gt;  &lt;p&gt;To fix the master page problem, I needed to load it from code behind.&amp;#160; Once I did that, I was able to have that show up.&amp;#160; But then I had a problem of the Silverlight application didn’t show up at all.&lt;/p&gt;  &lt;p&gt;To get around that I needed to get rid of the width and height settings from the Silverlight object.&amp;#160; So I needed to change from using width=100% height=100% to style=”width: 700px; height: 700px”&lt;/p&gt;  &lt;p&gt;After making that change, the only thing left was to move my connection string settings into the web.config file for SharePoint.&amp;#160; After that was done, my Silverlight Navigation project loaded just fine in SharePoint and was able to use RIA Data Services.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I hope these two posts help anyone else looking to do this.&amp;#160; Let me know if you run into any other problems or have any suggestions.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9753887" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/tom/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/tom/archive/tags/RIA/default.aspx">RIA</category></item><item><title>Adventures with Silverlight 3.0 and SharePoint – Part 1</title><link>http://blogs.msdn.com/tom/archive/2009/06/02/adventures-with-silverlight-3-0-and-sharepoint-part-1.aspx</link><pubDate>Tue, 02 Jun 2009 19:33:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9685888</guid><dc:creator>Tom</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/tom/comments/9685888.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9685888</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9685888</wfw:comment><description>&lt;p&gt;I have been working on getting Silverlight 3.0 to work with SharePoint 2007 and I wanted to share with you the progress I have made and some of the challenges I have remaining.&lt;/p&gt;  &lt;h3&gt;Project&lt;/h3&gt;  &lt;p&gt;This project uses Silverlight 3.0, the Silverlight Toolkit for 3.0, and RIA Data Services.&amp;#160; So it is basically using as much as it can that is new.&amp;#160; This means we have a Entity Model and a ASP.NET web application that the Silverlight application will use.&amp;#160; It also uses authentication using the new Domain Service for authentication.&lt;/p&gt;  &lt;h3&gt;What I did&lt;/h3&gt;  &lt;p&gt;So the first thing I did was to follow the steps in &lt;a href="http://www.u2u.info/Blogs/karine/Lists/Posts/Post.aspx?ID=40"&gt;this blog post&lt;/a&gt; about Silverlight 2.&amp;#160; I just changed it to be the System.Web.Silverlight from 3.0.&amp;#160; The suggestion for upgrading the web.config for Silverlight worked great for bringing most of the stuff I needed.&lt;/p&gt;  &lt;p&gt;I then did the following steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Copied my project under the _layouts folder &lt;/li&gt;    &lt;li&gt;Copied the bin folder for my project to the VirtualDirectories\80\bin folder of SharePoint &lt;/li&gt;    &lt;li&gt;Ran gacutil on system.web.silverlight &lt;/li&gt;    &lt;li&gt;Ran gacutil on system.web.ria &lt;/li&gt;    &lt;li&gt;Ran gacutil on system.web.domainservices.webcontrols &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I then made some changes to the web.config of my project, namely removing everything that was already in the web.config for SharePoint.&amp;#160; The last change I did was to make the bin folder have FullTrust.&amp;#160; I did this by adding the following to the wss_minimaltrust.config file:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 108.73%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 150px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;&lt;span style="color: #008000"&gt;CodeGroup class=&amp;quot;UnionCodeGroup&amp;quot; version=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     PermissionSetName=&lt;span style="color: #006080"&gt;&amp;quot;FullTrust&amp;quot;&lt;/span&gt;&amp;gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #008000"&gt;    &amp;lt;IMembershipCondition&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;         class=&lt;span style="color: #006080"&gt;&amp;quot;UrlMembershipCondition&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         version=&lt;span style="color: #006080"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; Url=&lt;span style="color: #006080"&gt;&amp;quot;$AppDirUrl$/bin/*&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     /&amp;gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &amp;lt;/CodeGroup&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;After making these changes, the next problem I ran into was around RIA.&amp;#160; It makes calls using a DataService.axd.&amp;#160; So that needed to be added to the web.config file.&amp;#160; In &amp;lt;system.web&amp;gt;:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;httpHandlers&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &amp;lt;add path=&lt;span style="color: #006080"&gt;&amp;quot;DataService.axd&amp;quot;&lt;/span&gt; verb=&lt;span style="color: #006080"&gt;&amp;quot;GET,POST&amp;quot;&lt;/span&gt; type=&lt;span style="color: #006080"&gt;&amp;quot;System.Web.Ria.DataServiceFactory, System.Web.Ria, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;       validate=&lt;span style="color: #006080"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &amp;lt;/httpHandlers&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And &amp;lt;system.Webservers&amp;gt;:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;handlers&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &amp;lt;add name=&lt;span style="color: #006080"&gt;&amp;quot;DataService&amp;quot;&lt;/span&gt; verb=&lt;span style="color: #006080"&gt;&amp;quot;GET,POST&amp;quot;&lt;/span&gt; path=&lt;span style="color: #006080"&gt;&amp;quot;DataService.axd&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;             type=&lt;span style="color: #006080"&gt;&amp;quot;System.Web.Ria.DataServiceFactory, System.Web.Ria, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &amp;lt;/handlers&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;That information is talked about in the Silverlight forum for getting it to work with Azure &lt;a href="http://silverlight.net/themes/silverlight/forums/thread.aspx?ThreadID=88451&amp;amp;AspxAutoDetectCookieSupport=1"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I then tried to get my application to load the SharePoint master page but I ran into a problem where it tells me:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; The referenced file &lt;span style="color: #006080"&gt;'&amp;lt;path to master&amp;gt;'&lt;/span&gt; &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; not allowed on &lt;span style="color: #0000ff"&gt;this&lt;/span&gt; page.&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;I am currently investigating that error and will post more as I progress.&amp;#160; If anyone else is trying to get this to work with SharePoint or has any suggestions, I’d love to hear them.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9685888" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/tom/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/tom/archive/tags/RIA/default.aspx">RIA</category></item><item><title>CannonPI teaser video</title><link>http://blogs.msdn.com/tom/archive/2009/05/07/cannonpi-teaser-video.aspx</link><pubDate>Thu, 07 May 2009 20:58:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9594353</guid><dc:creator>Tom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/tom/comments/9594353.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9594353</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9594353</wfw:comment><description>&lt;p&gt;There is a new video up on youtube that is the beginning of many more videos.&amp;#160; You should check it out and look for for more coming soon.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:ee89a40b-1927-4810-b3e6-844d81978f49" class="wlWriterSmartContent"&gt;&lt;div id="2d1d2902-9c7d-4df2-89c0-342fc7b11fa8" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=cCApcSq1ke0" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/tom/WindowsLiveWriter/CannonPIteaservideo_C453/video9b93cf23cf05.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('2d1d2902-9c7d-4df2-89c0-342fc7b11fa8'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/cCApcSq1ke0&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/cCApcSq1ke0&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Also, see if you recognize any of the people in this, feel free to post here who you think they are.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9594353" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/tom/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS7/default.aspx">IIS7</category></item><item><title>Silverlight RIA calling Stored Procedures that don’t return tables</title><link>http://blogs.msdn.com/tom/archive/2009/05/07/silverlight-ria-calling-stored-procedures-that-don-t-return-tables.aspx</link><pubDate>Thu, 07 May 2009 17:07:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9593650</guid><dc:creator>Tom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/tom/comments/9593650.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9593650</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9593650</wfw:comment><description>&lt;p&gt;There are times where you want to use a stored procedure that doesn’t return just normal rows out of a database.&amp;#160; One classic example is if you are doing Full-Text Searching and want to return the Rank.&lt;/p&gt;  &lt;p&gt;The first step to doing this is the get your stored procedures exposed in the ADO.NET Entity Data Model.&amp;#160; Instead of going through the steps for doing that here, I’ll just point you to a great post by Julie Lerman on her blog: &lt;a title="Implement SELECT Stored Procedures that return miscellaneous data in CTP2 of EF Designer" href="http://www.thedatafarm.com/Blog/2007/12/19/ImplementSELECTStoredProceduresThatReturnMiscellaneousDataInCTP2OfEFDesigner.aspx"&gt;Implement SELECT Stored Procedures that return miscellaneous data in CTP2 of EF Designer&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;After following those steps, you will have the stored procedures all ready to be called from the Entity Data Model.&amp;#160; You can then use these stored procedures from ASP.NET, ASP.NET MVC, or anything else that can consume the Entity Data Model.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;One side note, if you use the “Update Model from Database…” feature on your Entity Model, it will destroy the store layer tables that you created from Julie’s post.&amp;#160; If that happens, just recreate them again.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now to get this to work from Silverlight using RIA, there is another step that needs to be done.&amp;#160; You need to get these stored procedures exposed in your Domain Service.&amp;#160; One way to handle doing that is to create functions in the Domain Service like the following for each of them.&amp;#160; Assume you have a stored procedure called SearchData and it takes a string as input to seach for in the database.&amp;#160; You can create a function in the Domain Service like:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; IQueryable&amp;lt;SearchDataTable&amp;gt; GetSearchData(String SearchString)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Context.SearchData(SearchString).AsQueryable();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;When you compile this, it will create a client side function called LoadSearchData that takes a string as input.&amp;#160; Then you can call this just like you load any other data in Silverlight RIA:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Searching(String search)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(search))&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     context.LoadSearchData(search);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     context.Loaded += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EventHandler&amp;lt;System.Windows.Ria.Data.LoadedDataEventArgs&amp;gt;(context_Loaded);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; context_Loaded(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, System.Windows.Ria.Data.LoadedDataEventArgs e)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;     var context = sender &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; MyDomainContext;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (SearchDataTable searchData &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; context.SearchDataTable)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;         ... &lt;span style="color: #0000ff"&gt;do&lt;/span&gt; stuff with the data ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Notice that I am hooking up to when the context is finished being loaded so that I know the data has been populated.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9593650" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/tom/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/tom/archive/tags/Entity+Data+Model/default.aspx">Entity Data Model</category><category domain="http://blogs.msdn.com/tom/archive/tags/Data+Access/default.aspx">Data Access</category></item><item><title>How are production ASP.NET site problems applied in the future?</title><link>http://blogs.msdn.com/tom/archive/2009/04/27/how-are-production-asp-net-site-problems-applied-in-the-future.aspx</link><pubDate>Mon, 27 Apr 2009 20:38:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9571487</guid><dc:creator>Tom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/tom/comments/9571487.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9571487</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9571487</wfw:comment><description>&lt;p&gt;There are a lot of different things you can use to monitor a production ASP.NET web site for problems.&amp;#160; Some of the most common are logging, perfmon counters and the like.&amp;#160; There is also the method of getting feedback from people using the site when they relay that there is a problem.&lt;/p&gt;  &lt;p&gt;The question I would like to talk about is how do you use this information for future projects.&lt;/p&gt;  &lt;h3&gt;Best Practices&lt;/h3&gt;  &lt;p&gt;I think the most obvious way is the create a type of best practices document from the learning that you have had in the past.&amp;#160; For example, using StringBuilder if you are going to be dynamically building up strings.&lt;/p&gt;  &lt;h3&gt;Code Re-use&lt;/h3&gt;  &lt;p&gt;Another useful method is sharing code that is already in production so that other future projects can use it.&amp;#160; This not only has the added benefit of less development time, you know this code has been running in production and will work correctly and not cause issues.&lt;/p&gt;  &lt;h3&gt;Analysis&lt;/h3&gt;  &lt;p&gt;Sometimes you can notice things in production that you are unable to fix.&amp;#160; For example something that would take an entire redesign of the web site to fix.&amp;#160; But these types of things can be passed on to the next project where some of the design decisions haven’t been made yet.&amp;#160; One such decision could be how many servers should handle each layer of your site.&amp;#160; And how many database servers you should have.&lt;/p&gt;  &lt;h3&gt;Other ideas?&lt;/h3&gt;  &lt;p&gt;What other things do you do with your learnings from previous web sites?&amp;#160; Do you look at places where you over-analyzed a problem and spent too much time solving something that didn’t need such a complicated solution?&amp;#160; I’d love to hear what else people do.&amp;#160; Does the technology play a role in future sites?&amp;#160; Like would you consider changing to Silverlight or MVC because of something that happened on a previous site?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9571487" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Logging modules for ASP.NET (MVC) and also for Windows Azure</title><link>http://blogs.msdn.com/tom/archive/2009/04/24/logging-modules-for-asp-net-mvc-and-also-for-windows-azure.aspx</link><pubDate>Fri, 24 Apr 2009 17:07:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9566755</guid><dc:creator>Tom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/tom/comments/9566755.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9566755</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9566755</wfw:comment><description>&lt;p&gt;I was just reading through Scott Hanselman’s &lt;a href="http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx"&gt;post&lt;/a&gt; about ELMAH and this sounds like a great idea.&amp;#160; Getting a easy to consume report of all of your exceptions is a wonderful thing, especially when you add in that you can get it as an RSS feed, an email or a web site.&amp;#160; You can check out &lt;a title="ELMAH" href="http://code.google.com/p/elmah/"&gt;ELMAH&lt;/a&gt; or read through his post to get a lot of details on it.&lt;/p&gt;  &lt;p&gt;The web site looks like this:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://elmah.googlecode.com/svn/wiki/homeshot.png" /&gt;&lt;/p&gt;  &lt;p&gt;This also got me thinking about Windows Azure and some of the logging that has been done already for that.&amp;#160; So I wanted to highlight one of the projects here and talk about what it does.&amp;#160; It is called &lt;a href="http://azuremonitor.codeplex.com/"&gt;Azure Application Monitor&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;This allows you to see how much time and memory your instance is using.&amp;#160; After you integrate this into your application, you will get a report like:&lt;/p&gt;  &lt;p&gt;&lt;img alt="AzureMonitor.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=AzureMonitor&amp;amp;DownloadId=63081" /&gt;&lt;/p&gt;  &lt;p&gt;It is easy to add this to your application.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://azuremonitor.codeplex.com/Release/ProjectReleases.aspx"&gt;Download&lt;/a&gt; the application &lt;/li&gt;    &lt;li&gt;Add the following line to your code.&amp;#160; If you are adding it to a WebRole, add it in the Page_PreRender() function.&amp;#160; Or in the Start() of a WorkerRole, changing it to WorkerRole below:      &lt;pre class="csharpcode"&gt;Neudesic.Azure.AzureMonitor.Start(&lt;span class="str"&gt;&amp;quot;AppName&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;WebRole&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
    &lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/li&gt;

  &lt;li&gt;Be sure you have the TableStorageEndpoint configuration setting configured.&lt;/li&gt;

  &lt;li&gt;Create a PerfCounterUpdateInterval configuration setting and set the value (the value is in ticks (1000 ticks = 1 second)&lt;/li&gt;

  &lt;li&gt;Test and deploy your application&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To view the data, you need to configure the AzureMonitor so that it points to your TableStorageEndpoint&lt;/p&gt;

&lt;p&gt;As for what all it tracks, here is the list:&lt;/p&gt;

&lt;li&gt;Application Name (you supply this in your code)&lt;/li&gt;

&lt;li&gt;Role Name (you supply this in your code)&lt;/li&gt;

&lt;li&gt;Machine Name&lt;/li&gt;

&lt;li&gt;Process ID&lt;/li&gt;

&lt;li&gt;Thread count&lt;/li&gt;

&lt;li&gt;Handle count&lt;/li&gt;

&lt;li&gt;Total processor time&lt;/li&gt;

&lt;li&gt;User processor time&lt;/li&gt;

&lt;li&gt;Private memory size&lt;/li&gt;

&lt;li&gt;Non-paged memory size&lt;/li&gt;

&lt;li&gt;Paged memory size&lt;/li&gt;

&lt;li&gt;Paged system memory size&lt;/li&gt;

&lt;li&gt;Peak paged memory size&lt;/li&gt;

&lt;li&gt;Peak virtual memory size&lt;/li&gt;

&lt;li&gt;Peak working set&lt;/li&gt;

&lt;li&gt;Page file usage&lt;/li&gt;

&lt;li&gt;Peak page file usage&lt;/li&gt;

&lt;li&gt;Non-paged Pool Usage&lt;/li&gt;

&lt;li&gt;Local machine time&lt;/li&gt;

&lt;li&gt;Process local start time&lt;/li&gt;

&lt;p&gt;It is rather easy to add more stuff to this as the code is available from the projects location.&lt;/p&gt;

&lt;p&gt;One a side-note, if you want to see what data you have in your Blobs, Queues and Tables, there is an updated version of &lt;a href="http://azurestorageexplorer.codeplex.com/"&gt;Azure Storage Explorer&lt;/a&gt; available now.&amp;#160; From that site:&lt;/p&gt;

&lt;p&gt;The most current release of Azure Storage Explorer, version 2.0, has several improvements over the original version:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The UI is WPF-based and has Outlook-style navigation.&lt;/li&gt;

  &lt;li&gt;Multiple storage accounts are supported, and you can change your storage account details directly in the tool.&lt;/li&gt;

  &lt;li&gt;In addition to text and byte views of items, blob items that are pictures can be viewed as images.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Azure Storage Explorer 2.0 does not presently allow you to act on storage items. This capability is being considered for a future update.&lt;/p&gt;

&lt;p&gt;Let me know what you think or if you use any other tools for ASP.NET or Windows Azure.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9566755" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Exceptions/default.aspx">Exceptions</category><category domain="http://blogs.msdn.com/tom/archive/tags/MVC/default.aspx">MVC</category><category domain="http://blogs.msdn.com/tom/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Any ASP.NET Debugging requests?</title><link>http://blogs.msdn.com/tom/archive/2009/04/22/any-asp-net-debugging-requests.aspx</link><pubDate>Wed, 22 Apr 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9561114</guid><dc:creator>Tom</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/tom/comments/9561114.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9561114</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9561114</wfw:comment><description>&lt;p&gt;With us starting to look forward to .NET 4.0, I started to think about the debugging story for ASP.NET and wondered if you had any requests for what you would like to see.&lt;/p&gt;  &lt;p&gt;Some of the things that are on my mind are ideas like:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Giving some kind of visual debugging experience to help people to troubleshoot ASP.NET problems more quickly.&lt;/li&gt;    &lt;li&gt;Coming up with a better story for x64 dumps&lt;/li&gt;    &lt;li&gt;Having some more automated commands to give information to users.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I am not saying that any of these will be coming, but they are all things that I am interested in seeing and will be investigating.&lt;/p&gt;  &lt;p&gt;So what would you like to see for the future of the debugging experience?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9561114" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category></item><item><title>MSDN updates</title><link>http://blogs.msdn.com/tom/archive/2009/04/20/msdn-updates.aspx</link><pubDate>Mon, 20 Apr 2009 15:52:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9556634</guid><dc:creator>Tom</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/tom/comments/9556634.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9556634</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9556634</wfw:comment><description>&lt;p&gt;Scott Hanselman did a great post about some of the new and upcoming features of MSDN that everyone should check out if you haven’t already.&amp;#160; You can read all his great details &lt;a href="http://www.hanselman.com/blog/LowBandwidthViewAndOtherHiddenAndFutureFeaturesOfMSDN.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This got me thinking about MSDN and some of the new things that I have noticed.&lt;/p&gt;  &lt;p&gt;I think my favorite thing that is on MSDN is the ability for the community to add content to any page.&amp;#160; You can see this at the bottom of any page:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/tom/WindowsLiveWriter/MSDNupdates_7B2D/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/tom/WindowsLiveWriter/MSDNupdates_7B2D/image_thumb.png" width="660" height="261" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking on that allows you to add a comment to the page.&amp;#160; You can also see just above that where you can add your own tags to the page.&amp;#160; These things can really help people get involved in the content on MSDN and help to change how things look on the site.&lt;/p&gt;  &lt;p&gt;And if you want to really add to the documentation, you can always check out the &lt;a href="http://wiki.asp.net/"&gt;ASP.NET Wiki&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So have you found any hidden gems?&amp;#160; Used any of the ones that Scott or myself have pointed out yet?&lt;/p&gt;  &lt;p&gt;Tell me what you think.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9556634" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/tom/archive/tags/MSDN/default.aspx">MSDN</category></item><item><title>ASP.NET MVC and JSON and when do you use Async</title><link>http://blogs.msdn.com/tom/archive/2009/04/03/asp-net-mvc-and-json-and-when-do-you-use-async.aspx</link><pubDate>Fri, 03 Apr 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9528356</guid><dc:creator>Tom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/tom/comments/9528356.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9528356</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9528356</wfw:comment><description>&lt;p&gt;I wanted to post somewhat of a discussion starter around some of the new technologies that ASP.NET has recently released. &lt;/p&gt;  &lt;h3&gt;ASP.NET MVC&lt;/h3&gt;  &lt;p&gt;This technology has one huge benefit of allowing you to do unit testing on your site.&amp;#160; But there are also a number of other advantages to it, for example, you can have a web page call commands inside a controller.&amp;#160; This allows multiple pages to call the same command which helps keep things clean.&amp;#160; It also does a pretty good job of separating the code from the presentation layer.&amp;#160; But I did find myself doing a lot of coding like I used to with classic ASP or even IDC where we loop through results and have &amp;lt;%= %&amp;gt; snippets all over the aspx page.&lt;/p&gt;  &lt;h3&gt;JSON/AJAX&lt;/h3&gt;  &lt;p&gt;These technologies have really opened the door to a lot more asynchronous commands on the web.&amp;#160; They allow you to do lots of small submissions and updates without the need to submit and refresh the whole page.&lt;/p&gt;  &lt;h3&gt;jQuery&lt;/h3&gt;  &lt;p&gt;This is a really interesting new functionality in that it really isn’t anything new but just a way of collecting things in a cleaner way.&amp;#160; The way it is designed really gives us an ability to do things that you generally don’t consider doing.&amp;#160; For example, you can make images clickable without having any link code in the html.&amp;#160; It can also give some interesting ways to hide some of your IP (although they can always see it using something like netmon).&lt;/p&gt;  &lt;h3&gt;Silverlight&lt;/h3&gt;  &lt;p&gt;I think with Silverlight 3, we have really raised the bar for making Silverlight a choice for developing an application.&amp;#160; Especially if you combine it with RIA, there are a lot of great applications of Silverlight that before would be much harder to create.&amp;#160; I know Silverlight 3 is just in developer beta, but I have been using it quite a bit lately and I think it is really going to change things.&amp;#160; The deep linking and search engine optimization functionality really help make this a good solution as well.&lt;/p&gt;  &lt;h3&gt;So when would you use which?&lt;/h3&gt;  &lt;p&gt;That is what I’d like to hear from everyone.&amp;#160; If you have a page, when do you decide that you should do something async?&amp;#160; When do you decide that you should just submit the entire page?&amp;#160; Have you considered using Silverlight yet?&amp;#160; What functionality makes it attractive to you?&amp;#160; Is it the off-line functionality?&lt;/p&gt;  &lt;h3&gt;My take&lt;/h3&gt;  &lt;p&gt;I wanted to give some of my thoughts on these things, but remember that they are just thoughts as a lot of these technologies I haven’t used enough to know which is best for what situation.&lt;/p&gt;  &lt;p&gt;I think that most of these technologies allow for very fast creation of a site.&amp;#160; I think a lot of it boils down to what you are comfortable with or what you have available.&amp;#160; If you have designers at your disposal, Silverlight is a great choice as they can create the Xaml to make your application look amazing.&lt;/p&gt;  &lt;p&gt;I think one of the powerful things about MVC is that you can combine it with AJAX, jQuery, JSON to get a bunch of these things in the same application.&amp;#160; But it still is a question as to when to use what.&amp;#160; For me, I really like using jQuery to control the UI and then have it call commands through AJAX/JSON.&amp;#160; It also allows you to update a page with new content without having to refresh the page.&amp;#160; Which makes the user experience a lot cleaner.&lt;/p&gt;  &lt;p&gt;As for Silverlight, in general I think it is a wildcard out of the bunch.&amp;#160; You can do all the same things you can with these other technologies but within the same framework.&amp;#160; So I think if you want to have the best of all worlds and learn the smallest amount, this may be a good way to go.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So what are your thoughts?&amp;#160; And do you have any other functionality that you would like that see that isn’t available yet?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9528356" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/tom/archive/tags/MVC/default.aspx">MVC</category><category domain="http://blogs.msdn.com/tom/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://blogs.msdn.com/tom/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/tom/archive/tags/JSON/default.aspx">JSON</category></item><item><title>ASP.NET Troubleshooting</title><link>http://blogs.msdn.com/tom/archive/2009/03/24/asp-net-troubleshooting.aspx</link><pubDate>Tue, 24 Mar 2009 19:31:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9504630</guid><dc:creator>Tom</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/tom/comments/9504630.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9504630</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9504630</wfw:comment><description>&lt;p&gt;So with how long ASP.NET has been out for now, I am really curious to know how people go about tracking down issues in their project.&lt;/p&gt;  &lt;p&gt;I’d like to know things like:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;How do you know there is a problem&lt;/li&gt;    &lt;li&gt;What tools do you use to confirm that the problem really is a problem&lt;/li&gt;    &lt;li&gt;How do you gather data about the problem&lt;/li&gt;    &lt;li&gt;How do you determine if the problem is your code or something else (like the network, hard drive failure, etc)&lt;/li&gt;    &lt;li&gt;If the problem is your code, how do you ensure your fix resolves the problem (how do you test the fix)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If there are any others, I’d also like to hear them.&lt;/p&gt;  &lt;p&gt;Also, if you do anything in the Cloud now, I’d love to hear how you troubleshoot that.&amp;#160; And it can be from any cloud service provider.&lt;/p&gt;  &lt;p&gt;And have any of these things changed with some of the new ways to program that have come out.&amp;#160; For example, AJAX, MVC, Silverlight, IE8, jQuery, etc.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9504630" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/tom/archive/tags/IE8/default.aspx">IE8</category><category domain="http://blogs.msdn.com/tom/archive/tags/MVC/default.aspx">MVC</category><category domain="http://blogs.msdn.com/tom/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Linq/default.aspx">Linq</category><category domain="http://blogs.msdn.com/tom/archive/tags/jQuery/default.aspx">jQuery</category></item><item><title>Feedback and Microsoft</title><link>http://blogs.msdn.com/tom/archive/2009/03/18/feedback-and-microsoft.aspx</link><pubDate>Wed, 18 Mar 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9483821</guid><dc:creator>Tom</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/tom/comments/9483821.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=9483821</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=9483821</wfw:comment><description>&lt;p&gt;There are a lot of different ways that feedback can get to Microsoft and a lot of different ways that it can be handled.&amp;#160; For suggestions for making our products better, one of the best methods is to use &lt;a href="http://connect.microsoft.com"&gt;Microsoft Connect&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;One of the things that aren’t know as well is that when our developers look at the data from Connect, they look at how many votes an item has to help them understand how many people are affected by this issue.&lt;/p&gt;  &lt;p&gt;So I would suggest you post your issues and suggestions to Connect and also get the word out about the issue.&amp;#160; If you have one that you think I may be interested in helping to drive, feel free to let me know either through a comment on my site or by using the Contact Me and sending me an email.&amp;#160; Be sure to include the connection (“Visual Studio” for example) and the ID and title of the item so I can find it.&amp;#160; I will review the post and if I think it is important to more people, I will blog about it on here and get others to check it out and hopefully vote on it.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9483821" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/tom/archive/tags/Microsoft/default.aspx">Microsoft</category></item></channel></rss>