<?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>PeterKellner.net &#187; IIS7</title>
	<atom:link href="http://peterkellner.net/category/iis7/feed/" rel="self" type="application/rss+xml" />
	<link>http://peterkellner.net</link>
	<description>Microsoft Focused, JavaScript,HTML5 (ExtJS, SenchaTouch &#38; Windows 8 Metro)</description>
	<lastBuildDate>Fri, 11 May 2012 16:43:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>How To Convert From Request With Parameter to No Parameter in ASP.NET (Server.Transfer)</title>
		<link>http://peterkellner.net/2010/01/24/iis7-wildcardmapping-servertransfer-rewrite/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=iis7-wildcardmapping-servertransfer-rewrite</link>
		<comments>http://peterkellner.net/2010/01/24/iis7-wildcardmapping-servertransfer-rewrite/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 21:59:33 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[IIS7]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2010/01/24/iis7-wildcardmapping-servertransfer-rewrite/</guid>
		<description><![CDATA[&#160;
The problem is that I’m trying to keep track of the exact URL a person selects including the request parameter.&#160; That is, I have a URLs that can be played as follows:
http://video.peterkellner.net/TestPage.html?src=P1_Intro.wmv
http://video.peterkellner.net/TestPage.html?src=P2_BasicRIANoTooling.wmv
&#160;
I’ve actually got 7 videos that I want people to be able to play.&#160; The problem is that my web statistics tracker is going [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>The problem is that I’m trying to keep track of the exact URL a person selects including the request parameter.&#160; That is, I have a URLs that can be played as follows:</p>
<p><a title="http://video.peterkellner.net/TestPage.html?src=P1_Intro.wmv" href="http://video.peterkellner.net/TestPage.html?src=P1_Intro.wmv">http://video.peterkellner.net/TestPage.html?src=P1_Intro.wmv</a></p>
<p><a title="http://video.peterkellner.net/TestPage.html?src=P2_BasicRIANoTooling.wmv" href="http://video.peterkellner.net/TestPage.html?src=P2_BasicRIANoTooling.wmv">http://video.peterkellner.net/TestPage.html?src=P2_BasicRIANoTooling.wmv</a></p>
<p>&#160;</p>
<p>I’ve actually got 7 videos that I want people to be able to play.&#160; The problem is that my web statistics tracker is going to count all videos as coming from TestPage.html and I will not be able to tell which video is getting how much traffic.&#160; What I’d really like is have unique landing pages for each one that I can put links to on my blog, and then have those tracked separately.</p>
<p> <span id="more-462"></span>
<p>So, here is what I would like:</p>
<p><a title="http://video.peterkellner.net/P2_BasicRIANoTooling_wmv" href="http://video.peterkellner.net/P2_BasicRIANoTooling_wmv">http://video.peterkellner.net/P2_BasicRIANoTooling_wmv</a></p>
<p><a title="http://video.peterkellner.net/P2_BasicRIANoTooling_wmv" href="http://video.peterkellner.net/P2_BasicRIANoTooling_wmv">http://video.peterkellner.net/P2_BasicRIANoTooling_wmv</a></p>
<p>Then, in my web stats, I will see the following</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/HowToConvertFromRequestWithPara.Transfer_B2D3/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/HowToConvertFromRequestWithPara.Transfer_B2D3/image_thumb.png" width="485" height="311" /></a></p>
<p>To achieve this, the solution is to add a “<a href="http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-7-integrated-pipeline/">WildCardMapper</a>” to IIS7 so that all requests, including those without extensions go through the <a href="http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp">asp.net pipeline</a>.&#160; Then, the requests can be trapped in either a <a href="http://msdn.microsoft.com/en-us/library/cc304803.aspx">asp.net module</a>, or simply in the global.asax.cs which is how I did it for simplicity.</p>
<p>To do this, the following code needs to be put in the web.config modules section:</p>
<pre class="csharpcode">    &lt;system.webServer&gt;
        &lt;modules runAllManagedModulesForAllRequests=<span class="str">&quot;true&quot;</span>    &gt;</pre>
<style type="text/css">
<p>.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; }</style>
<p>Then, in the global.asax.cs file, you add the following code:</p>
<pre class="csharpcode">  <span class="kwrd">protected</span> <span class="kwrd">void</span> Application_BeginRequest(<span class="kwrd">object</span> sender, EventArgs e)
        {
            var incomingUrlFromRequest = HttpContext.Current.Request.Url;
            <span class="kwrd">if</span> (incomingUrlFromRequest != <span class="kwrd">null</span> &amp;&amp; incomingUrlFromRequest.Segments.Count() == 2 &amp;&amp;
                incomingUrlFromRequest.Segments[1].EndsWith(<span class="str">&quot;_wmv&quot;</span>))
            {
                <span class="kwrd">string</span> newPath = <span class="rem">//Context.Request.MapPath(&quot;~&quot;) +</span>
                    String.Format(<span class="str">&quot;TestPage.html?src={0}&quot;</span>, incomingUrlFromRequest.Segments[1]).Replace(<span class="str">&quot;_wmv&quot;</span>, <span class="str">&quot;.wmv&quot;</span>);

                Server.Transfer(newPath, <span class="kwrd">false</span>);
            }

        }</pre>
<p>
  </p>
<style type="text/css">
<p>.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; }</style>
<p>&#160;</p>
<p>Now, the translation happens exactly as you would expect.&#160; That is, when you enter the URL: <a title="http://video.peterkellner.net/P2_BasicRIANoTooling_wmv" href="http://video.peterkellner.net/P2_BasicRIANoTooling_wmv">http://video.peterkellner.net/P2_BasicRIANoTooling_wmv</a> invisibly, you are taken to <a title="http://video.peterkellner.net/TestPage.html?src=P1_Intro.wmv" href="http://video.peterkellner.net/TestPage.html?src=P1_Intro.wmv">http://video.peterkellner.net/TestPage.html?src=P1_Intro.wmv</a> because Server.Transfer is used.&#160; The browser does not even know the transfer took place, and the URL stays the same in the top of the users browser.</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/HowToConvertFromRequestWithPara.Transfer_B2D3/image_3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/HowToConvertFromRequestWithPara.Transfer_B2D3/image_thumb_3.png" width="414" height="192" /></a></p>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2010/01/24/iis7-wildcardmapping-servertransfer-rewrite/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>First Blood Using the New Microsoft Web Platform Installer</title>
		<link>http://peterkellner.net/2009/04/04/microsoftwebplatforminstaller-php-mysql-installation-experience/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoftwebplatforminstaller-php-mysql-installation-experience</link>
		<comments>http://peterkellner.net/2009/04/04/microsoftwebplatforminstaller-php-mysql-installation-experience/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 16:57:55 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IIS7]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/04/04/microsoftwebplatforminstaller-php-mysql-installation-experience/</guid>
		<description><![CDATA[ At MIX09 this year, Scott Guthrie presented the Web Platform Installer which seemed like an easy way to install specific technologies on an IIS server.&#160; At the moment, I need to test an application that uses PHP so I figure this is a good time to try it.&#160; Over the years, I’ve had several [...]]]></description>
			<content:encoded><![CDATA[<p> At <a href="http://live.visitmix.com/">MIX09</a> this year, <a href="http://weblogs.asp.net/scottgu/">Scott Guthrie</a> presented the Web Platform Installer which seemed like an easy way to install specific technologies on an IIS server.&#160; At the moment, I need to test an application that uses PHP so I figure this is a good time to try it.&#160; Over the years, I’ve had several spectacular failures trying to install PHP on IIS.&#160; Now, maybe I will get it right.&#160; So, here we go.</p>
<p>Step 1: Read the walk through ( <a title="http://learn.iis.net/page.aspx/523/web-platform-installer-walkthrough/" href="http://learn.iis.net/page.aspx/523/web-platform-installer-walkthrough/">http://learn.iis.net/page.aspx/523/web-platform-installer-walkthrough/</a> )</p>
<p>Step 2:&#160; Click Install now&#160; (Can’t find PHP, starting searching the web now)&#160; {Note: 4/14/2009. Turns out I missed an easy step.&#160; See bottom of article for that step}</p>
<p>Found this link:&#160; <a href="http://ruslany.net/2009/03/install-php-with-microsoft-web-platform-installer-20/">Install PHP with Microsoft Web Platform Installer 2.0</a></p>
<p>Step 3: Go Here and try again:&#160; <a title="http://php.iis.net/" href="http://php.iis.net/">http://php.iis.net/</a></p>
<p><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb.png" width="364" height="205" /></a></p>
<p> <span id="more-285"></span>
<p>Well, I still don’t see <a href="http://php.net/">php</a> on the web server choice, but I do see WordPress so I chose to install <a href="http://wordpress.org/">WordPress</a> and said go.&#160; Let’s see what happens now.</p>
<p>It’s saying downloading PHP and also <a href="http://www.mysql.com/">MySQL</a> so maybe this is good.&#160; Patiently waiting…</p>
<p>It’s now asking me for WordPress Setup…</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb_3.png" width="440" height="304" /></a></p>
<p>And now for the MySql user (pretty impressive)</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb_4.png" width="452" height="312" /></a></p>
<p>And, Installing WordPress…</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_5.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb_5.png" width="478" height="330" /></a></p>
<p>&#160;</p>
<p>Oops, failed.&#160; Hmm, wasn’t really intereted in wordpress anyhow, just wanted php.</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb_6.png" width="465" height="321" /></a></p>
<p>Sounds like it did not like my credentials to MySql.&#160; I thought I di follow all the directions.&#160; I’ll paste the error here:</p>
<p>providerName: createApp    <br />&#160;&#160;&#160; path: MSDeploy.iisApp/iisApp[@path='wordpress/WPTest']/createApp[@path='wordpress/WPTest']     <br />[9:42:493]Adding dbMySql (Server=localhost;Database=wordpress;uid=pkellner;Pwd=mypass;)     <br />&#160;&#160;&#160; Details:     <br />&#160;&#160;&#160; operationType: Add     <br />&#160;&#160;&#160; providerName: dbMySql     <br />&#160;&#160;&#160; path: Server=localhost;Database=wordpress;uid=pkellner;Pwd=peterk;     <br />[9:42:498]The database &#8216;wordpress&#8217; could not be created..&#160; Retrying operation &#8216;Add&#8217; on object dbMySql (Server=localhost;Database=wordpress;uid=pkellner;Pwd=mypass;).&#160; Attempt 1 of 5.     <br />&#160;&#160;&#160; Details:     <br />&#160;&#160;&#160; originalMessage: The database &#8216;wordpress&#8217; could not be created.     <br />&#160;&#160;&#160; operationType: Add     <br />&#160;&#160;&#160; retryAttempt: 1     <br />&#160;&#160;&#160; retryCount: 5</p>
<p>It does say php installed though successfully and that was my goal.</p>
<p>So, let’s see what is in IIS manager (inetmgr) so, I run inetmgr from a command prompt.</p>
<p>Well, interesting, I see some new stuff including Web Platform Installer at the bottom.&#160; I don’t see anything about php, but I do see a WordPress directory so there is some hope php worked.&#160; Here is what I see.</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_7.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb_7.png" width="557" height="416" /></a></p>
<p>Let’s go into the WordPress base directory and add the only php I know:</p>
<p>Info.php as follows:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">html</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">head</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">title</span><span class="kwrd">&gt;</span> PHP Test Script <span class="kwrd">&lt;/</span><span class="html">title</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">head</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">body</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;?</span><span class="html">php</span>
<span class="attr">phpinfo</span>( );
?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">body</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">html</span><span class="kwrd">&gt;</span> </pre>
<pre class="csharpcode">And, Run it:</pre>
<pre class="csharpcode"><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_8.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb_8.png" width="584" height="347" /></a> </pre>
<p>Woohoo!&#160; It worked!!!!!</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_9.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb_9.png" width="507" height="436" /></a></p>
<p>Mission Accomplished in about 10 minutes.&#160; Not a perfect experience, but pretty darn good.&#160; BTW, I’m running 64Bit Vista RTM SP1, 4Gig of Ram on a Lenovo W500.</p>
<p>Hope this helps.</p>
<p>&#160;</p>
</p>
<hr />
<p>{Added 4/14/2009, this is the step I missed to do it correctly}</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_10.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb_10.png" width="370" height="275" /></a></p>
<p>And then select the PHP checkbox:</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_11.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/FirstBloodUsingtheNewMicrosoftWebPlatfor_894B/image_thumb_11.png" width="366" height="272" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/04/04/microsoftwebplatforminstaller-php-mysql-installation-experience/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Not Using Session in ASP.NET means Session Affinity/Sticky Sessions Not Necessary in Web Farms!</title>
		<link>http://peterkellner.net/2009/04/03/aspnet-session-provider-stefan-schackow-thread-affinity/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aspnet-session-provider-stefan-schackow-thread-affinity</link>
		<comments>http://peterkellner.net/2009/04/03/aspnet-session-provider-stefan-schackow-thread-affinity/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 04:51:53 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 3.5]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[How Things Work]]></category>
		<category><![CDATA[IIS7]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[WebFarm]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/04/03/aspnet-session-provider-stefan-schackow-thread-affinity/</guid>
		<description><![CDATA[So, I’ve always incorrectly thought that somehow, the cookie stored in asp.net was somehow tied to the Session provider in asp.net.&#160; Turns out I’m wrong.&#160; This came up because I was discussing with another engineer whether we need to bother with a Session provider since we do not use Session in our web application.&#160; That [...]]]></description>
			<content:encoded><![CDATA[<p>So, I’ve always incorrectly thought that somehow, the cookie stored in <a href="http://www.asp.net/">asp.net</a> was somehow tied to the Session provider in asp.net.&#160; Turns out I’m wrong.&#160; This came up because I was discussing with another engineer whether we need to bother with a Session provider since we do not use Session in our <a href="http://en.wikipedia.org/wiki/Server_farm">web application</a>.&#160; That is, we don’t ever store information by saying something like: </p>
<p>Session[“MyKey1”] = “MyShoppingCartInfo1”;</p>
<p>My assumption was that somehow, the Cookie planted on the client’s browser was in lock step with the IIS server through Session and that even if we did not store Session data, we still had to hook up a Session Provider.&#160; Wrong I am.</p>
<p> <span id="more-283"></span>
<p>I emailed <a href="http://www.amazon.com/Professional-ASP-NET-Security-Membership-Management/dp/0764596985">Stefan Schackow</a>, a Microsoft employee who is an expert on all things secure around <a href="http://www.iis.net/">IIS</a> and ASP.NET and he assured me of this fact.&#160; In fact, I’m going to quote (with his permission) what he told me.</p>
<blockquote><p><em>If your app doesn’t use Session anywhere then it doesn’t matter.&#160; We don’t internally rely on session state for anything.&#160; You could literally pull the SessionStateModule out of the configured httpModules list and it would have no effect.</em></p>
<p><em>This is a point of confusion for developers because the term “session” is overloaded.&#160; For some of the EJB platforms “session” implies things like authenticated sessions.&#160; But for </em><a href="http://ASP.NET"><em>ASP.NET</em></a><em> session is just a bag of data – if your application doesn’t use it, you can completely ignore the feature.</em></p>
</blockquote>
<p>I hope this helps you if you were misguided like I was.</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/04/03/aspnet-session-provider-stefan-schackow-thread-affinity/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>First Blood, Windows 7. Shock and Awe!</title>
		<link>http://peterkellner.net/2009/02/15/windows7-beta-review-firstlook/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=windows7-beta-review-firstlook</link>
		<comments>http://peterkellner.net/2009/02/15/windows7-beta-review-firstlook/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 21:44:46 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 2.0]]></category>
		<category><![CDATA[IIS7]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://peterkellner.net/?p=257</guid>
		<description><![CDATA[(Windows 7 Beta, Build 7000 put through the paces)
Background
I don’t seem to have a pile of computers laying around anymore so testing new operating systems can be a bit time consuming.&#160; In general, I don’t like testing OS’s in VM’s because performance on the actual hardware is what I’m trying to measure.&#160; So, luckily, I [...]]]></description>
			<content:encoded><![CDATA[<p>(<a href="http://www.microsoft.com/windows/windows-7/">Windows 7</a> Beta, Build 7000 put through the paces)</p>
<h2>Background</h2>
<p>I don’t seem to have a pile of computers laying around anymore so testing new operating systems can be a bit time consuming.&#160; In general, I don’t like testing OS’s in VM’s because performance on the actual hardware is what I’m trying to measure.&#160; So, luckily, I do seem to have an infinite number of SATA hard drives for my Lenovo Thinkpad W500 ( <a href="http://www.amazon.com/gp/product/B001FBMIFS?ie=UTF8&amp;tag=petkelsblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001FBMIFS">Lenovo 4062-27U ThinkPad W500 15.4&quot; Notebook</a><img style="border-bottom-style: none !important; border-right-style: none !important; margin: 0px; border-top-style: none !important; border-left-style: none !important" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=petkelsblo-20&amp;l=as2&amp;o=1&amp;a=B001FBMIFS" width="1" height="1" /> ) so I figure the best thing to do is install the OS on one of those.&#160; <a href="http://www.microsoft.com/en/us/default.aspx">Microsoft</a> recently sent me two DVD’s (a 32bit and a 64bit).&#160; Since I have a 64bit machine with 4gig of RAM, I figure I should test the 64bit.&#160; So, here we go.     </p>
<p> <span id="more-257"></span><br />
<h2>The Installation Process</h2>
<p>If you have ever installed a Microsoft OS before, the steps are basically the same.&#160; Put the disk in, boot, go through the standard format disk screen (I like to erase all my partitions), then press go.&#160; What seems to vary between OS’s is the time to run through this process.&#160; So, here is how long it took for me.</p>
<table width="400">
<tbody>
<tr>
<td valign="top" width="200">7:29 PM</td>
<td valign="top" width="200">Put win7 DVD and Boot</td>
</tr>
<tr>
<td valign="top" width="200">7:30 PM</td>
<td valign="top" width="200">Windows Starts</td>
</tr>
<tr>
<td valign="top" width="200">7:40 PM</td>
<td valign="top" width="200">Windows Restarts</td>
</tr>
<tr>
<td valign="top" width="200">7:47 PM</td>
<td valign="top" width="200">Done!</td>
</tr>
</tbody>
</table>
<p>Less than 20 minutes!&#160; Pretty impressive.&#160; I’d also like to note that it seemed all the devices on my Lenovo W500 worked best I can tell.&#160; The Video drivers installed perfectly (even supported my two monitors on my docking station), sound worked, wireless networking immediately connected to my home wifi and it felt very very fast.</p>
<p>Next thing, I test to see if it can find my network printers.&#160; I have two, an HP Deskjet 6470 and a Brother 8860DN.&#160; It finds them both!    </p>
<h2>Let’s Test some Software</h2>
<p>So, the first thing to test is Visual Studio 2008.&#160; I install that from a DVD (because I have not figure out how to mount ISO’s yet and MagicDVD is rumored not to work).&#160; It installs flawlessly as does VS2008 SP1 and the MVC Beta.&#160; Running it however gives me a little problem.&#160; I need to tell it to run as Admin and in Vista Compatibility mode for it to open my web projects (which work with IIS7).&#160; Then, I install subversion (tortoisesvn), still no problem, FireFox next, still no problem.&#160; Now to have some fun.</p>
<p>Next thing is I download the current Visual Studio 2008 project I’ve been working on with svn and build it.&#160;&#160; It builds fast and flawlessly.&#160; Then, I start running IE8 and Firefox just cruising the internet.&#160; Everything works without a hitch.   </p>
<h2>Anything Missing?</h2>
<p>The only thing that I couldn’t figure out how to do was mount ISO’s as driver letters.&#160; Most my software is stored as ISO’s so I really miss that.    </p>
<h2>Conclusions</h2>
<p>Well, if during the next year while Microsoft tests Windows 7, they restrain from filling it with features, this OS is a definite winner.&#160; It feels hugely faster than both XP and Vista.&#160; The graphics is just awesome.&#160; The transparencies feel natural, moving items around the start bar is easy, as well as visualizing what is running by hovering over the start bar is much smoother than Vista.</p>
<p>I can’t wait until this is my primary OS.&#160; I’m tempted to use it as my main OS but luckily my instincts prevent me from doing that.&#160; Microsoft clearly says this is for testing only and I choose to follow that.</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/02/15/windows7-beta-review-firstlook/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To Tell If Ajax is working on your site with ASP.NET&#8217;s ajax UpdatePanel and other Controls</title>
		<link>http://peterkellner.net/2008/10/12/tell-ajax-working-asp-net/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tell-ajax-working-asp-net</link>
		<comments>http://peterkellner.net/2008/10/12/tell-ajax-working-asp-net/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 01:36:26 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 2.0]]></category>
		<category><![CDATA[ASP.NET 3.5]]></category>
		<category><![CDATA[Atlas/AJAX]]></category>
		<category><![CDATA[IIS7]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/10/12/tell-ajax-working-asp-net/</guid>
		<description><![CDATA[So, I suppose you should just be able to see the fact that Ajax is working by the lack of page flashing.&#160; That may be true on a normal page on a slow connection, but if you are testing locally, it may not be so obvious.&#160; You can certainly crank up your debugging tools like [...]]]></description>
			<content:encoded><![CDATA[<p>So, I suppose you should just be able to see the fact that <a href="http://www.asp.net/ajax/">Ajax</a> is working by the lack of page flashing.&#160; That may be true on a normal page on a slow connection, but if you are testing locally, it may not be so obvious.&#160; You can certainly crank up your debugging tools like <a href="http://getfirebug.com/">firebug</a> or <a href="http://www.asp.net/ajax/">Fiddler</a>, or you can do the cheap trip about I&#8217;m about to explain.</p>
<p>Simply, add a sleep statement to your page_load event (Thread.Sleep(3000);) and run your page.&#160; If you are using <a href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx">IE7</a> like I am, on the post back (for a full page), you will see the windows icon spinning in the tab control.&#160; If you see that, you are getting a full page post back. If not, chances are you are not.</p>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/10/12/tell-ajax-working-asp-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to User HttpHandler such as .ashx file with IIS7 Integrated Mode, Webfarm Environment</title>
		<link>http://peterkellner.net/2008/09/06/iis7-httphandlers-handlers-integrated-mode-webfarm/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=iis7-httphandlers-handlers-integrated-mode-webfarm</link>
		<comments>http://peterkellner.net/2008/09/06/iis7-httphandlers-handlers-integrated-mode-webfarm/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 15:20:06 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 3.5]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[IIS7]]></category>
		<category><![CDATA[WebFarm]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/09/06/iis7-httphandlers-handlers-integrated-mode-webfarm/</guid>
		<description><![CDATA[Recently, we&#8217;ve moved our hosting for the Silicon Valley Code Camp to MOSSO, which is a hosted web farm.&#160; In order to run modules and handlers, it seems it&#8217;s necessary to run in IIS7&#8242;s integrated mode.&#160; Once this is set, other small issues creep up like for example you can no longer run HttpHandler&#8217;s from [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, we&#8217;ve moved our hosting for the <a href="http://www.siliconvalley-codecamp.com/">Silicon Valley Code Camp</a> to <a href="http://mosso.com">MOSSO</a>, which is a hosted web farm.&#160; In order to run modules and handlers, it seems it&#8217;s necessary to run in <a href="http://www.iis.net/">IIS7&#8242;s</a> <a href="http://weblogs.asp.net/mschwarz/archive/2008/04/14/ajax-net-and-iis-7-integrated-mode.aspx">integrated mode</a>.&#160; Once this is set, other small issues creep up like for example you can no longer run <a href="http://msdn.microsoft.com/en-us/library/ms998532.aspx">HttpHandler&#8217;s</a> from the standard HttpHandler&#8217;s section in your <a href="http://msdn.microsoft.com/en-us/library/aa719558.aspx">web.config</a> file (see below)</p>
<div class="csharpcode">
<pre class="alt">&lt;httpHandlers&gt;</pre>
<pre>            &lt;remove verb=<span class="str">&quot;*&quot;</span> path=<span class="str">&quot;*.asmx&quot;</span>/&gt;</pre>
<pre class="alt">            &lt;add verb=<span class="str">&quot;*&quot;</span> path=<span class="str">&quot;*.asmx&quot;</span> validate=<span class="str">&quot;false&quot; ...</span></pre>
<pre>            &lt;add verb=<span class="str">&quot;*&quot;</span> path=<span class="str">&quot;*_AppService.axd&quot;</span> validate=<span class="str">&quot;false&quot;</span> ...</pre>
<pre class="alt">            &lt;add verb=<span class="str">&quot;GET,HEAD&quot;</span> path=<span class="str">&quot;ScriptResource.axd&quot;</span> type=<span class="str">&quot;System.Web.Handlers.ScriptResourceHandler,..</span></pre>
<pre>            &lt;add type=<span class="str">&quot;PeterKellner.Utils.CaptchaTypeHandler&quot;</span> verb=<span class="str">&quot;GET&quot;</span> path=<span class="str">&quot;CaptchaType.ashx&quot;</span>/&gt;</pre>
<pre class="alt">&lt;/httpHandlers&gt;</pre>
</div>
<p>&#160;</p>
<p><span id="more-147"></span></p>
<p>In order to make this work, you have to do two things.&#160; First, as MOSSO suggest on their web site <a title="http://help.mosso.com/article.php?id=260" href="http://help.mosso.com/article.php?id=260">http://help.mosso.com/article.php?id=260</a> you need to set a section in your <a href="http://msdn.microsoft.com/en-us/magazine/cc163453.aspx">&lt;system.webServer&gt;</a> section called &lt;staticContent&gt;.&#160; Second, you need to add to the the same handler you defined in the old section to the &lt;handlers&gt; section of the &lt;system.webServer&gt; section.&#160; Make sure you add a name tag because that&#8217;s required in this section, where as it&#8217;s not required in the &lt;HttpHandlers&gt; section.</p>
<div class="csharpcode">
<pre class="alt">    <span class="kwrd">&lt;</span><span class="html">system.webServer</span><span class="kwrd">&gt;</span></pre>
<pre>    <span class="kwrd">&lt;</span><span class="html">validation</span> <span class="attr">validateIntegratedModeConfiguration</span><span class="kwrd">=&quot;false&quot;</span><span class="kwrd">/&gt;</span></pre>
<pre class="alt">    <span class="kwrd">&lt;</span><span class="html">staticContent</span><span class="kwrd">&gt;</span></pre>
<pre>      <span class="kwrd">&lt;</span><span class="html">mimeMap</span> <span class="attr">fileExtension</span><span class="kwrd">=&quot;.ashx&quot;</span> <span class="attr">mimeType</span><span class="kwrd">=&quot;text/html&quot;</span> <span class="kwrd">/&gt;</span></pre>
<pre class="alt">    <span class="kwrd">&lt;/</span><span class="html">staticContent</span><span class="kwrd">&gt;</span></pre>
<pre>    <span class="kwrd">&lt;</span><span class="html">modules</span>  <span class="attr">runAllManagedModulesForAllRequests</span><span class="kwrd">=&quot;true&quot;</span>  <span class="kwrd">&gt;</span></pre>
<pre class="alt">            <span class="kwrd">&lt;</span><span class="html">remove</span> <span class="attr">name</span><span class="kwrd">=&quot;ScriptModule&quot;</span><span class="kwrd">/&gt;</span></pre>
<pre>            <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">=&quot;ScriptModule&quot;</span> <span class="attr">preCondition</span><span class="kwrd">=&quot;managedHandler&quot;</span> <span class="attr">type</span><span class="kwrd">=&quot;System.Web.Handlers....</span></pre>
<pre class="alt">      <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">type</span><span class="kwrd">=&quot;HealthMonitor.GeneralErrorModule,HealthMonitor&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;GeneralErrorModule&quot;</span><span class="kwrd">/&gt;</span></pre>
<pre>    <span class="kwrd">&lt;/</span><span class="html">modules</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">        <span class="kwrd">&lt;</span><span class="html">handlers</span><span class="kwrd">&gt;</span></pre>
<pre>            <span class="kwrd">&lt;</span><span class="html">remove</span> <span class="attr">name</span><span class="kwrd">=&quot;WebServiceHandlerFactory-Integrated&quot;</span><span class="kwrd">/&gt;</span></pre>
<pre class="alt">            <span class="kwrd">&lt;</span><span class="html">remove</span> <span class="attr">name</span><span class="kwrd">=&quot;ScriptHandlerFactory&quot;</span><span class="kwrd">/&gt;</span></pre>
<pre>            <span class="kwrd">&lt;</span><span class="html">remove</span> <span class="attr">name</span><span class="kwrd">=&quot;ScriptHandlerFactoryAppServices&quot;</span><span class="kwrd">/&gt;</span></pre>
<pre class="alt">            <span class="kwrd">&lt;</span><span class="html">remove</span> <span class="attr">name</span><span class="kwrd">=&quot;ScriptResource&quot;</span><span class="kwrd">/&gt;</span></pre>
<pre>            <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">=&quot;ScriptHandlerFactory&quot;</span> <span class="attr">verb</span><span class="kwrd">=&quot;*&quot;</span> <span class="attr">path</span><span class="kwrd">=&quot;*.asmx&quot;</span> <span class="attr">preCondition</span><span class="kwrd">=&quot;integratedMode&quot;</span> <span class="attr">type</span><span class="kwrd">=&quot;System....</span></pre>
<pre class="alt">            <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">=&quot;ScriptHandlerFactoryAppServices&quot;</span> <span class="attr">verb</span><span class="kwrd">=&quot;*&quot;</span> <span class="attr">path</span><span class="kwrd">=&quot;*_AppService.axd&quot;</span> <span class="attr">preCondition</span><span class="kwrd">=&quot;integratedMode&quot;</span>...</pre>
<pre>            <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">=&quot;ScriptResource&quot;</span> <span class="attr">preCondition</span><span class="kwrd">=&quot;integratedMode&quot;</span> <span class="attr">verb</span><span class="kwrd">=&quot;GET,HEAD&quot;</span> <span class="attr">path</span><span class="kwrd">=&quot;ScriptResource.axd&quot;</span> <span class="attr">...</span></pre>
<pre class="alt">      <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">=&quot;CapthaTypeHandler&quot;</span> <span class="attr">type</span><span class="kwrd">=&quot;PeterKellner.Utils.CaptchaTypeHandler&quot;</span> <span class="attr">verb</span><span class="kwrd">=&quot;GET&quot;</span> <span class="attr">path</span><span class="kwrd">=&quot;CaptchaType.ashx&quot;</span><span class="kwrd">/&gt;</span></pre>
<pre>    <span class="kwrd">&lt;/</span><span class="html">handlers</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">    <span class="kwrd">&lt;/</span><span class="html">system.webServer</span><span class="kwrd">&gt;</span></pre>
<pre>    <span class="kwrd">&lt;</span><span class="html">runtime</span><span class="kwrd">&gt;</span></pre>
</div>
<style type="text/css">
<p>.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; }</style>
<p>Hope this saves you some time!</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/09/06/iis7-httphandlers-handlers-integrated-mode-webfarm/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)
Database Caching 8/35 queries in 0.008 seconds using disk: basic
Content Delivery Network via Amazon Web Services: S3: PetersBlogCDN.s3.amazonaws.com

Served from: peterkellner.net @ 2012-05-22 10:21:44 -->
