<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jeff Wilcox &#187; ASP.NET</title>
	<atom:link href="http://www.jeff.wilcox.name/topics/aspnet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeff.wilcox.name</link>
	<description>Silverlight, rich client apps and web development</description>
	<lastBuildDate>Wed, 18 Aug 2010 01:33:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Book Review: Pro C# 2008 and the .NET 3.5 Platform</title>
		<link>http://www.jeff.wilcox.name/2008/04/bookprocsharp2008/</link>
		<comments>http://www.jeff.wilcox.name/2008/04/bookprocsharp2008/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 07:33:28 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/04/15/book-review-pro-c-2008-and-the-net-35-platform/</guid>
		<description><![CDATA[Wow. This book rocks: Pro C# 2008 and the .NET 3.5 Platform, by Andrew Troelsen.&#160; I’d recommend it to anyone that wants to get a lot of meat on 3.5 and down to business.&#160; It’s a massive book and well worth making room for in your office collection.&#160; It’s hard cover. When I picked up [...]]]></description>
			<content:encoded><![CDATA[<p>Wow. This book rocks: <a href="http://www.amazon.com/gp/product/1590598849?ie=UTF8&amp;tag=jwilcoxblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1590598849">Pro C# 2008 and the .NET 3.5 Platform</a>, by Andrew Troelsen.&nbsp; I’d recommend it to anyone that wants to get a lot of meat on 3.5 and down to business.&nbsp; It’s a massive book and well worth making room for in your office collection.&nbsp; It’s hard cover.</p>
<p>When I picked up the book several months ago, my main intention was to get everything I needed to grok 3.5, after being focused on Silverlight for a while I realized that I wasn’t making full use of LINQ and other sexy features in my code.&nbsp; This reference did it for me, with MSDN as my backup for any of the nitty gritty topics like <a href="http://msdn2.microsoft.com/en-us/library/bb397687.aspx">lambdas</a> and expression trees.&nbsp; Today I’m still using the book often as a clear way to introduce others to the new platform.</p>
<p><a title="Pro C# 2008 and the .NET 3.5 Platform" href="http://www.amazon.com/gp/product/1590598849?ie=UTF8&amp;tag=jwilcoxblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1590598849" target="_blank"><img src="http://media.jeff.wilcox.name/blog/view/books/procsharpbook2.png" align="left"/></a> A nice bonus was the ability to grab a PDF of the entire book from Apress for free after buying the book.&nbsp; I don’t know if this is a sign of the future or not, but being able to pull the book up in Adobe Acrobat has been almost as useful as being able to take the book to my favorite coffee shop to focus on the new 3.5 platform.</p>
<p>Don’t expect this book to tell you how to create a data structure, or what a ‘for’ loop is.&nbsp; The title is prefixed by Pro and it isn’t joking.&nbsp; This was enjoyable compared to many of today’s books that fill a few hundred pages with the obvious.</p>
<p>What surprised me, and many .NET developers will appreciate beyond the awesome C# 3.5 coverage: Details on so much of all things .NET – this is NOT a book for niche developers (web- only, client- only, looking to figure out XAML), but rather for enthusiasts, experts and technologists looking for breadth of knowledge.&nbsp; There’s some coverage of WPF.&nbsp; In-depth CLR stuff: assemblies, metadata, IL.</p>
<p>At the end of the day, C# 3.5 is great.&nbsp; Where I thought that generics were the bomb in 2.0, it is now obvious that C# has grown quite a bit since then.</p>
<h3>Book organization</h3>
<p>The <a href="http://www.apress.com/book/downloadfile/3833">Table of Contents</a> can be <a href="http://www.apress.com/book/downloadfile/3833">downloaded</a> online.&nbsp; The book is organized into these sections:</p>
<ul>
<li>Introducing C# and the .NET Platform  </li>
<li>Core C# Programming Constructs  </li>
<li>Advanced C# Programming Constructs  </li>
<li>Programming with .NET Assemblies  </li>
<li>Introducing the .NET Base Class Libraries  </li>
<li>Desktop User Interfaces  </li>
<li>Building Web Applications with ASP.NET  </li>
<li>Appendixes</li>
</ul>
<p>You’ll also find the <a href="http://www.apress.com/book/view/9781590598849">book’s summary</a>, source, bonus chapters, and a sample chapter on the <a href="http://www.apress.com/book/downloadfile/3832">Philosophy of .NET</a> (kind of like a quick boot camp for pros) on the <a href="http://www.apress.com/book/view/9781590598849">Apress.com site for the book</a>.</p>
<p>Note, there’s also now a <a href="http://www.amazon.com/gp/product/1590598229?ie=UTF8&amp;tag=jwilcoxblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1590598229">VB edition of this book</a> available.&nbsp; I’m not familiar with it, but since it’s also by Andrew Troelsen, I’ll assume that a lot of the material overlaps, especially on the full stack and platform coverage.&nbsp; Might be a good candidate to browse at a local bookseller.</p>
<p>Hope you find the book as helpful!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/04/bookprocsharp2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perform a full IIS 7 + ASP.NET install from the command prompt</title>
		<link>http://www.jeff.wilcox.name/2007/01/aspnet-full-iis7-install/</link>
		<comments>http://www.jeff.wilcox.name/2007/01/aspnet-full-iis7-install/#comments</comments>
		<pubDate>Mon, 29 Jan 2007 17:52:43 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://linux.jeff.wilcox.name/2007/01/29/aspnet-full-iis7-install/</guid>
		<description><![CDATA[[RAW] If you have a need to install the full version of IIS 7.0 (all features, options, and modules—including ASP.NET 2.0), you can do this from the command line using the new Package Manager tool as an alternative to the Add/Remove Windows Features interface. Simply execute the following from an elevated command prompt (it will [...]]]></description>
			<content:encoded><![CDATA[<p>[RAW]<br />
<P>If you have a need to install the full version of IIS 7.0 (all features, options, and modules—including ASP.NET 2.0), you can do this from the command line using the new Package Manager tool as an alternative to the Add/Remove Windows Features interface.</P></p>
<p><P>Simply execute the following from an elevated command prompt (it will also output a log file, that&#8217;s an optional parameter only):</P></p>
<p><P><TT>start /w %windir%\system32\pkgmgr.exe /l:logStep.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-ODBCLogging;IIS-Security;IIS-BasicAuthentication;IIS-WindowsAuthentication;IIS-DigestAuthentication;IIS-ClientCertificateMappingAuthentication;IIS-IISCertificateMappingAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;IIS-FTPPublishingService;IIS-FTPServer;IIS-FTPManagement;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI</TT></P></p>
<p><P>This should work with Windows Vista Business, Enterprise, and Ultimate SKUs.&nbsp; On x64 machines, you’ll want to make sure to execute this from an elevated 64-bit command prompt.</P></p>
<p><P>Background:<BR>A useful new feature of IIS 7 is its componentization; if you don’t need a particular feature of the server, such as CGI, simply exclude it.</P></p>
<p><P>Often while performing testing or preparing a development workstation, using pkgmgr.exe can save a little time if you’re looking for all the features.&nbsp; You can also modify the parameters to leave off specific features.</P></p>
<p><P>Update:<BR>Looks like there&#8217;s finally a document on this at the IIS web site as well, so if you&#8217;re using Home Premium or want to learn more about pkgmgr.exe, check out the article at <A href="http://www.iis.net/default.aspx?tabid=2&amp;subtabid=25&amp;i=958" mce_href="http://www.iis.net/default.aspx?tabid=2&amp;subtabid=25&amp;i=958">http://www.iis.net/default.aspx?tabid=2&amp;subtabid=25&amp;i=958</A>.</P></p>
<p>[/RAW]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2007/01/aspnet-full-iis7-install/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Upgrading ASP.NET Applications to the Integrated Pipeline</title>
		<link>http://www.jeff.wilcox.name/2006/12/aspnet-upgraging-pipeline-mode/</link>
		<comments>http://www.jeff.wilcox.name/2006/12/aspnet-upgraging-pipeline-mode/#comments</comments>
		<pubDate>Tue, 12 Dec 2006 04:51:55 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://linux.jeff.wilcox.name/2006/12/11/aspnet-upgraging-pipeline-mode/</guid>
		<description><![CDATA[[RAW] There&#8217;s a helpful article at the IIS.NET site detailing a lot of what it means to upgrade your developer workstation to Vista, what changes IIS 7.0 brings, and ASP.NET application compatibility.&#160; Direct link to the article. The most important content in this article, in my opinion, is that which outlines the specific ASP.NET changes. [...]]]></description>
			<content:encoded><![CDATA[<p>[RAW]<br />
<P>There&#8217;s a <A class="" href="http://www.iis.net/default.aspx?tabid=2&amp;subtabid=25&amp;i=1223&amp;p=1" mce_href="http://www.iis.net/default.aspx?tabid=2&amp;subtabid=25&amp;i=1223&amp;p=1">helpful article</A> at the IIS.NET site detailing a lot of what it means to upgrade your developer workstation to Vista, what changes IIS 7.0 brings, and ASP.NET application compatibility.&nbsp; <A class="" href="http://www.iis.net/default.aspx?tabid=2&amp;subtabid=25&amp;i=1223&amp;p=1" mce_href="http://www.iis.net/default.aspx?tabid=2&amp;subtabid=25&amp;i=1223&amp;p=1">Direct link to the article.</A></P></p>
<p><P>The most important content in this article, in my opinion, is that which <A class="" href="http://www.iis.net/default.aspx?tabid=2&amp;subtabid=25&amp;i=1223&amp;p=5" mce_href="http://www.iis.net/default.aspx?tabid=2&amp;subtabid=25&amp;i=1223&amp;p=5">outlines the specific ASP.NET changes</A>.</P></p>
<p><P>Here is the list of known changes with IIS 7.0 at this time:</P></p>
<p><UL><br />
<LI>In Integrated mode, Application_OnError is not called for exceptions that occur in HttpApplication::Init</LI></p>
<p><LI>Server.ClearError in EndRequest does not clear exception message in Integrated mode</LI></p>
<p><LI>Integrated mode applications may write to a response in EndRequest after an exception has been formatted and written to the response</LI></p>
<p><LI>In Integrated mode, ASP.NET no longer suppresses the content type when the response is empty</LI></p>
<p><LI>Different windows identity in Forms authentication</LI></p>
<p><LI>Default Authentication_OnAuthenticate event does not raise in Integrated mode</LI></p>
<p><LI>In Integrated mode Request.RawUrl contains the new query string after RewritePath is called</LI></p>
<p><LI>Passport Network credentials authentication is not supported in Windows Vista</LI></p>
<p><LI>PassportAuthentication module is not part of the Integrated pipeline</LI></p>
<p><LI>Large, valid forms auth tickets (length &lt;= 4096 bytes) present in the query string are rejected by IIS 7.0</LI></p>
<p><LI>In Integrated mode, the ASP.NET request time-out is applied multiple times during the request, allowing the request to execute longer</LI></p>
<p><LI>Trace settings are not transferred to Server.Transfer target page</LI></p>
<p><LI>The method Httpcontext.Current.Response.Write() cannot work in Application_Onstart()</LI></p>
<p><LI>HttpRequest.LogonUserIdentity throws an exception when accessed before PostAuthenticateRequest</LI></p>
<p><LI>In Integrated mode, ASP.NET modules will receive the first unauthenticated request to IIS when Anonymous authentication is disabled</LI></p>
<p><LI>ASP.NET cannot impersonate the client identity until PostAuthenticateRequest</LI></p>
<p><LI>Content-Type header is not generated when charset and content type are set to empty string</LI></p>
<p><LI>In Integrated mode, both synchronous and asynchronous events raise for each module before the next module executes</LI></p>
<p><LI>Response headers are removed in Integrated mode after calling ClearHeader in a custom IHttpModule</LI></p>
<p><LI>Using Windows and Forms authentication together in Integrated mode is not supported</LI></p>
<p><LI>In Integrated mode, IIS always rejects new lines in response headers (even if ASP.NET enableHeaderChecking is set to false)</LI></p>
<p><LI>PreSendRequestHeaders and PreSendRequestContent events will raise together for each module</LI></p>
<p><LI>The ordering of modules is reversed for PreSendRequestHeaders and PreSendRequestContent when using Integrated mode</LI></p>
<p><LI>In Integrated mode, threading and queuing settings in are ignored</LI></p>
<p><LI>If a configuration file error is encountered when using Integrated mode, IIS, not ASP.NET, generates the error message</LI></p>
<p><LI>In Integrated mode, ASP.NET applications must subscribe to pipeline events during a module’s Init call</LI><br />
</UL></p>
<p>[/RAW]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2006/12/aspnet-upgraging-pipeline-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick guide: Installing ASP.NET v1.1 on Windows Vista</title>
		<link>http://www.jeff.wilcox.name/2006/11/aspnet-v11-vista-install/</link>
		<comments>http://www.jeff.wilcox.name/2006/11/aspnet-v11-vista-install/#comments</comments>
		<pubDate>Fri, 10 Nov 2006 04:48:14 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://linux.jeff.wilcox.name/2006/11/09/aspnet-v11-vista-install/</guid>
		<description><![CDATA[[RAW] Vista ships with .NET Framework 2.0 in the box, but ASP.NET v1.1 is still fully supported if you need it-and here&#8217;s how. If you&#8217;re trying to diagnose this problem, the error message you will receive without allowing v1.1 is a 404.2 – Not Found; the description is &#8220;the page you are requesting cannot be [...]]]></description>
			<content:encoded><![CDATA[<p>[RAW]<br />
<P>Vista ships with .NET Framework 2.0 in the box, but ASP.NET v1.1 is still fully supported if you need it-and here&#8217;s how. </P></p>
<p><P>If you&#8217;re trying to diagnose this problem, the error message you will receive without allowing v1.1 is a 404.2 – Not Found; the description is &#8220;the page you are requesting cannot be served because of the ISAPI and CGI Restriction list settings on the Web server.&#8221;</P></p>
<p><P><IMG title="Error message when v1.1 is not enabled" style="WIDTH: 540px; HEIGHT: 405px" height=405 alt="Error message when v1.1 is not enabled" src="http://www.jeff.wilcox.name/blog/view/iis/v11_enable_error.jpg" width=540 border=0 mce_src="http://www.jeff.wilcox.name/blog/view/iis/v11_enable_error.jpg"></P></p>
<p><H2>Install .NET Framework v1.1 &amp; v1.1 SP1 </H2><br />
<P>Prerequisite: You have installed IIS on the machine already (Control Panel – Add/Remove Windows Features) </P></p>
<p><UL><br />
<LI>Download and Install <A href="http://www.microsoft.com/downloads/details.aspx?familyid=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;displaylang=en">.NET Framework v1.1</A> </LI></p>
<p><LI>Download and install <A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=A8F5654F-088E-40B2-BBDB-A83353618B38&amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=A8F5654F-088E-40B2-BBDB-A83353618B38&amp;displaylang=en">v1.1 Service Pack 1</A> </LI><br />
</UL></p>
<p><H2>Enable ASP.NET v1.1 in InetMgr </H2><br />
<P>Run &#8220;InetMgr&#8221; (even though the Run menu&#8217;s not in the Start Menu by default, you can still reach it by pressing [ <STRONG>Windows key</STRONG> ] + [ <STRONG>R </STRONG>]) </P></p>
<p><P>Click on your computer name in the tree, not the web site. This should be the top-most tree element. Double-click on &#8220;ISAPI and CGI Restrictions,&#8221; this is an icon in the center of the screen within the IIS group. </P></p>
<p><P><IMG title="v1.1 Enable Restrictions" style="WIDTH: 540px; HEIGHT: 405px" height=405 alt="v1.1 Enable Restrictions" src="http://www.jeff.wilcox.name/blog/view/iis/v11_enable_restrictions.jpg" width=540 border=0 mce_src="http://www.jeff.wilcox.name/blog/view/iis/v11_enable_restrictions.jpg"></P></p>
<p><P>Right-click on the ASP.NET list item entry and &#8220;Allow&#8221; it. You do not need to reset the web server. </P></p>
<p><P><IMG title="Right click and Allow" style="WIDTH: 540px; HEIGHT: 405px" height=405 alt="Right click and Allow" src="http://www.jeff.wilcox.name/blog/view/iis/v11_enable_allow.jpg" width=540 border=0 mce_src="http://www.jeff.wilcox.name/blog/view/iis/v11_enable_allow.jpg"></P></p>
<p><P><STRONG>You can also do this from an elevated command prompt using AppCmd.exe: </STRONG></P></p>
<p><P><TT>%windir%\system32\inetsrv\appcmd set config -section:isapiCgiRestriction /+.[path='%windir%\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll',allowed='true']</TT></P></p>
<p><H2>Creating v1.1 Applications </H2><br />
<P>Another obvious note, within the IIS Manager, you need to specify the application pool of choice when adding a new application. There is no concept of a v1.1 &#8220;integrated&#8221; mode, so your choices with v1.1 installed are: Integrated Pipeline 2.0, Classic/ISAPI 2.0, and Classic/ISAPI 1.1. </P></p>
<p><P><IMG title="Creating an ASP.NET v1.1 Application in InetMgr 7" style="WIDTH: 540px; HEIGHT: 405px" height=405 alt="Creating an ASP.NET v1.1 Application in InetMgr 7" src="http://www.jeff.wilcox.name/blog/view/iis/v11_enable_add_app.jpg" width=540 border=0 mce_src="http://www.jeff.wilcox.name/blog/view/iis/v11_enable_add_app.jpg"></P></p>
<p><P>Simply select the v1.1 application pool and you&#8217;re good to go!</P></p>
<p>[/RAW]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2006/11/aspnet-v11-vista-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Vista RTM: Making it happen for ASP.NET</title>
		<link>http://www.jeff.wilcox.name/2006/11/testing-asp-net-for-vista/</link>
		<comments>http://www.jeff.wilcox.name/2006/11/testing-asp-net-for-vista/#comments</comments>
		<pubDate>Thu, 09 Nov 2006 12:21:25 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://linux.jeff.wilcox.name/2006/11/09/testing-asp-net-for-vista/</guid>
		<description><![CDATA[[RAW] With the release of Windows Vista, the next generation Microsoft Platform for web developers looking to explore better integration between their applications and the web server. We&#8217;ve logged many hours over the last year making sure that the ASP.NET and IIS 7.0 experience is a success story, and I wanted to open by introducing [...]]]></description>
			<content:encoded><![CDATA[<p>[RAW]</p>
<p>With the release of Windows Vista, the next generation Microsoft Platform for web developers looking to explore better integration between their applications and the web server. We&#8217;ve logged many hours over the last year making sure that the ASP.NET and IIS 7.0 experience is a success story, and I wanted to open by introducing the new integrated mode and diving into some of what went on for the test team to bring the release to you.</p>
<h1>Integrated Mode: ASP.NET + IIS</h1>
<p>ASP.NET 2.0 shipped in October 2005 and was full of useful features, but on IIS 6 it still executed like a well-oiled Perl script would have a decade ago. For the most part, it sat on top of the web server, relying on an archaic native interface (ISAPI) to make it all happen. Simply enabling Windows authentication took two steps: One enabling it in the IIS manager, and the other configuring it your web.config file.</p>
<p>With Vista, all this is in the past: Handler mappings, authentication … it&#8217;s all a single story. One step to get a task done, a great new administrative interface to go with it. Being familiar with the work that&#8217;s gone on to make managed code a first-class citizen with IIS, I intend to use this blog as a place to share that experience.</p>
<p>I don&#8217;t intend to duplicate the great resources already online, so as a starting point, if you&#8217;re new to all this, please check out:</p>
<ul>
<li><a href="http://www.mvolo.com/">Mike Volodarsky&#8217;s &#8220;server-side&#8221;</a> blog</li>
<li>IIS.Net community site run by Microsoft, specifically the IIS7 <a href="http://www.iis.net/default.aspx?tabid=7">technical resources overview</a></li>
<li>The <a href="http://forums.iis.net/">IIS discussion forums</a> or <a href="http://forums.asp.net/">ASP.NET forums</a>, the best place to get your questions answered</li>
</ul>
<h1>Testing: Automation updates, new tools, overall process</h1>
<p>Testing ASP.NET, IIS, and Windows Vista together was a lot of work. It consisted of automation improvements, using new product features, adding test coverage, fixing test cases, and analyzing hundreds of thousands of automation results. Here&#8217;s a little bit of the behind-the-scenes work that happened from my perspective.</p>
<p>We rely on automation so much on the ASP.NET test team that it was critical to get our tests running on the new OS as soon as possible. Being able to kick off tests to run overnight means that I can devote the day to everything else: Resolving and fixing bugs, learning about and providing feedback on the product, and working on other exciting projects. This wouldn&#8217;t be possible without the large automation infrastructure we have in place. <a href="http://weblogs.asp.net/scottgu/archive/2004/10/28/249458.aspx">Scott Guthrie&#8217;s testing post</a> a few years ago really provides a great look at what&#8217;s involved in our testing.</p>
<h2>Integrated and classic application pool types</h2>
<p>As you can now place ASP.NET applications in either the IIS7 Integrated application pool or the Classic/ISAPI pool, we expanded the scope of our tests to run in both the integrated and classic modes. The default application pool type is now integrated; however, the classic mode is still around for compatibility, ASP.NET 1.1 SP1 applications, and other scenarios. If you&#8217;re impacted by a breaking change in the integrated mode, you can always just flip the application into the classic pool.</p>
<p>Expanding the possible contexts for all our tests to run in both modes meant more test results would be generated for each run, but the cost in additional time for execution is made up for by the presence of historical data and side-by-side results. Having results for the same underlying test, running into both pipeline modes, was really helpful for identifying bugs.</p>
<p>They weren&#8217;t all bugs either, some differences were as verifying the new <a href="http://blogs.iis.net/bills/archive/2006/10/19/Improving-Custom-Errors-for-IIS7-Server.aspx">IIS 7 error messages</a>.</p>
<h2>User account control</h2>
<p>The sweeping security improvements within Windows Vista made automation a little more difficult at first (that&#8217;s a good thing). Instead of just modifying some registry values to open the necessary firewall ports, changing a configuration file, or running a set of batch files, we had the fun challenge of interacting with User Account Control (UAC). Even though ASP.NET is a server-side process, our automation system is full of tools that run within the context of an end user session. Elevation to administrative privileges is needed for reimaging machines, configuring the product, and running tests. It took a lot of hard work by many people within the company to get us to where we are today.</p>
<h2>New tools like AppCmd</h2>
<p>The Microsoft philosophy of testing your products using your products is pretty fun at times. A good example that I have is the ability to take a snapshot of the web server configuration files with IIS 7—I can&#8217;t tell you how many times I use an older Windows 2003 machine and wish I could use this feature.</p>
<p>The AppCmd tool, located at %windir%\system32\inetsrv\appcmd.exe, is a great command-line interface to the web server. When we initially install IIS on a Vista machine, the scripts make a backup of the important IIS configuration files by calling &#8220;appcmd add backup Initial&#8221;. &#8220;Initial&#8221; is just the unique name for the backup. If you ever destroy the configuration files, you can simply issue an &#8220;appcmd restore backup Initial&#8221; command and you&#8217;re back in business, without having to examine what you did incorrectly.</p>
<p><img border="0" width="506" src="http://www.jeff.wilcox.name/blog/view/iis/AppCmdBackup.jpg" alt="AppCmd.exe sample console window" height="253" style="width: 506px; height: 253px" title="AppCmd.exe sample console window" /></p>
<h2>Testing Process</h2>
<p>Finally, there was the actual testing experience that had to happen. Part of the process:</p>
<ul>
<li>Creating a new run with a set of tests and the contexts in which they execute</li>
<li>Cross your fingers, hoping that the machines install Vista, the product, and come back online</li>
<li>Waiting as thousands of tests execute and log their results</li>
<li>Spending days investigating fun new Vista changes, improvements, bugs, fixing tests, and fixing the product</li>
<li>Repeat!</li>
</ul>
<p>We frequently performed &#8220;nightly&#8221; tests, which consist of the highest priority automation, along with a combination of Vista SKUs, product types, and languages. Test the SDK one week, and the full Visual Studio the following week; English, Arabic, Japanese, German; AMD64, x86, the list goes on!</p>
<p>Before each significant Vista milestone, we signed off by performing a major full automation test pass on the product. This was a major undertaking: one such test pass lasted a month and really pinpointed the work that needed to be done to finalize ASP.NET on Vista. If you haven&#8217;t already given the new IIS a try, run the IIS Manager after installing Vista and the web server, and try the &#8220;new&#8221; ASP.NET.</p>
<h1>In Closing</h1>
<p>I&#8217;m really proud of the quality of our product and hope that you find the new features and improvements really helpful in your work. Between the union of IIS + ASP.NET and the <a href="http://ajax.asp.net/">ASP.NET AJAX story</a>, there are some great reasons to use the Microsoft platform today. And you can <a href="http://www.iis.net/News/Item.aspx?i=1204">still use PHP too</a>!</p>
<p>Please let me know if you found this useful.</p>
<p>[/RAW]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2006/11/testing-asp-net-for-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
