<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Jake Ashcraft's WebLog</title><subtitle type="html" /><id>http://weblogs.asp.net/jakeashcraft/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/jakeashcraft/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2004-01-13T19:09:00Z</updated><entry><title>Personal Web Site Starter Kit (Beta2)</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/archive/2005/04/25/404104.aspx" /><id>http://weblogs.asp.net/jakeashcraft/archive/2005/04/25/404104.aspx</id><published>2005-04-25T04:26:00Z</published><updated>2005-04-25T04:26:00Z</updated><content type="html">&lt;font face="Verdana" size="2"&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;At first glance the Personal Web Site starter kit (PWSK)&amp;nbsp;appeared to be really cool for beginners. I decided that I was going to create a site with the PWSK for my daughter. Because the starter kit boasted some nice out of the box features such as manageable photo albums.&lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;So I got some hosting setup, created the site, and copied the files over and&amp;nbsp;come to find out, &lt;a href="http://www.crystaltech.com/"&gt;Crystal Tech&lt;/a&gt; doesn't support SQL Express. So I reproduced the required databases for SQL 2K and got it working. Well, at least it appeared to be working. Shortly after adding photos, logging in and out, the system began to error out. I would receive the following error.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color="#0000ff"&gt;&lt;em&gt;Timeout expired. &amp;nbsp;The timeout period elapsed prior to obtaining a connection from the pool. &amp;nbsp;This may have occurred because all pooled connections were in use and max pool size was reached.&lt;/em&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;After some investigation it appears that in the PhotoManager.cs class all connections being opened are never closed. So I made some modifications to the functions and copied the new version up. Well, so far so good. Everything is working fine, connections are ok but now I have discovered another problem. I uploaded about 25 photos. In the PWSK all photos are stored in the Photos table. My 25 photos consume roughly 11MB. Well, much to my surprise, when you navigate to the main page, some initialization takes place and it loads all the photos into memory from the first photo album. This really sucks because not I have to sit and wait for all photos to download.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;So in the meantime I will work around this by having my first photo album contain only 1 or 2 photos in it. Needless to say, I am a little disappointed.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;I would be interested to hear in anyone else's experiences with this.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=404104" width="1" height="1"&gt;</content><author><name>jakeashcraft</name><uri>http://weblogs.asp.net/members/jakeashcraft.aspx</uri></author></entry><entry><title>mscorcfg.msc missing in .net redist beta2</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/archive/2005/04/22/403924.aspx" /><id>http://weblogs.asp.net/jakeashcraft/archive/2005/04/22/403924.aspx</id><published>2005-04-22T22:22:00Z</published><updated>2005-04-22T22:22:00Z</updated><content type="html">&lt;p&gt;&lt;font face="Verdana" size="2"&gt;If you have ever worked with partial or full trust, you are most certainly familiar with the Microsoft .NET Framework 2.0 Configuration (mscorcfg.msc) utility. However, if you install the .net 2.0 redistributable for beta2 on a machine, you will find that the utility is gone. Installing VS.NET 2005 Beta2 has this file but where has it gone in the redistributable?&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;If anyone has any ideas, please let me know.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=403924" width="1" height="1"&gt;</content><author><name>jakeashcraft</name><uri>http://weblogs.asp.net/members/jakeashcraft.aspx</uri></author></entry><entry><title>Enable intellisense with for WiX using VS.NET 2005</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/archive/2005/03/15/394703.aspx" /><id>http://weblogs.asp.net/jakeashcraft/archive/2005/03/15/394703.aspx</id><published>2005-03-15T17:28:00Z</published><updated>2005-03-15T17:28:00Z</updated><content type="html">&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Over the past couple weeks I have been working with WiX in an attempt to convert all of our Wise built setups. Although tough at times, WiX has proven to be a very valuable toolset. If you, like my organization have already made the switch to VS.NET 2005, you know that there isn't a whole lot of support yet.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Some of you might be aware of an addin for VS.NET 2003 called Votive. This addin allows you to create WiX projects and has nice features such as intellisense. However, this application is not supported under VS.NET 2005.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;If you want to have intellisense in your wxs file using VS.NET 2005, you can do a simple change to make this happen.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;First, copy the wix.xsd file to the same directory location as your wxs file.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Next, open your wxs file and modify the wix node from:&lt;/font&gt;&lt;/p&gt;&lt;font face="Tahoma" size="2"&gt;&lt;font color="#0000ff" size="1"&gt; &lt;p&gt;&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#800000"&gt;Wix&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;xmlns&lt;/font&gt;&lt;font color="#0000ff"&gt;="&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;a href="'http://schemas.microsoft.com/wix/2003/01/wi"/'"&gt;http://schemas.microsoft.com/wix/2003/01/wi"/&lt;/a&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000"&gt;to&lt;/font&gt;&lt;/p&gt;&lt;font size="1"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="1"&gt; &lt;p&gt;&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#800000"&gt;Wix&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;xmlns&lt;/font&gt;&lt;font color="#0000ff"&gt;="&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;a href="http://schemas.microsoft.com/wix/2003/01/wi"&gt;http://schemas.microsoft.com/wix/2003/01/wi&lt;/a&gt;" &lt;/font&gt;&lt;font color="#ff0000"&gt;xmlns:xsi&lt;/font&gt;&lt;font color="#0000ff"&gt;="&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;" &lt;/font&gt;&lt;font color="#ff0000"&gt;xsi:schemaLocation&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;"&lt;font color="#0000ff"&gt;&lt;a href="http://schemas.microsoft.com/wix/2003/01/wi"&gt;http://schemas.microsoft.com/wix/2003/01/wi&lt;/a&gt; WiX.xsd&lt;/font&gt;"&lt;font color="#0000ff" size="1"&gt;&lt;font size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#000000" size="2"&gt;That's it, open your wxs file in VS.NET 2005 and intellisense will be enabled.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Also note that this is not specific to VS.NET 2005, you can do this in 2003 as well.&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#000000" size="2"&gt;I hope this proves to be useful to someone.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#000000" size="2"&gt;- jake&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=394703" width="1" height="1"&gt;</content><author><name>jakeashcraft</name><uri>http://weblogs.asp.net/members/jakeashcraft.aspx</uri></author></entry><entry><title>Voted</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/archive/2004/11/02/251376.aspx" /><id>http://weblogs.asp.net/jakeashcraft/archive/2004/11/02/251376.aspx</id><published>2004-11-03T00:36:00Z</published><updated>2004-11-03T00:36:00Z</updated><content type="html">&lt;font face="Tahoma" size="2"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;Today was my first time &lt;strong&gt;voting&lt;/strong&gt; in a presidential election and I have to say...it was so liberating! I was in and out in 10 minutes. I have heard stories about people waiting in lines for hours but I didn't have a line at all.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;Needless to say, my experience during my very first presidential vote was a good one!&lt;/span&gt;&lt;/p&gt;&lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=251376" width="1" height="1"&gt;</content><author><name>jakeashcraft</name><uri>http://weblogs.asp.net/members/jakeashcraft.aspx</uri></author></entry><entry><title>Coding Best Practices Using DateTime in the .NET Framework</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/archive/2004/06/17/158719.aspx" /><id>http://weblogs.asp.net/jakeashcraft/archive/2004/06/17/158719.aspx</id><published>2004-06-17T22:51:00Z</published><updated>2004-06-17T22:51:00Z</updated><content type="html">&lt;FONT size=2&gt;&lt;FONT face="Trebuchet MS"&gt;This article makes good background reading&amp;nbsp;for anyone writing software which&amp;nbsp;deals with time-series data:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face="Trebuchet MS" size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Trebuchet MS'"&gt;&lt;A title=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/datetimecode.asp href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/datetimecode.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/datetimecode.asp&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=158719" width="1" height="1"&gt;</content><author><name>jakeashcraft</name><uri>http://weblogs.asp.net/members/jakeashcraft.aspx</uri></author></entry><entry><title>To busy to blog</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/archive/2004/03/03/83487.aspx" /><id>http://weblogs.asp.net/jakeashcraft/archive/2004/03/03/83487.aspx</id><published>2004-03-03T23:01:00Z</published><updated>2004-03-03T23:01:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Tahoma color=#000000 size=2&gt;Yes, I am still alive, just been busy. Between writing code and playing on the weekends, I have not had the time to blog as much as I would like.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;I did run into something interesting though. The documentation for HttpContext.Cache indicates that it returns a Cache object for the current request. So, it was to my understanding that the cache object would be unique to each request. Nope, that isn't the case. So if you did something like:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;string someString = &amp;#8220;Test&amp;#8220;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;System.Web.HttpContext.Current.Cache.Insert(&amp;#8221;somekey&amp;#8221;, someString);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Then from a seperate machine read the cache like:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;string s = (string) System.Web.Current.Cache[&amp;#8221;somekey&amp;#8221;];&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The string value s would in fact be the value &amp;#8220;Test&amp;#8220;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Could the MS documentation be wrong? Perhaps I am missing something. I have found several sites that indicate that the HttpContext.Cache is per user and HttpRuntime.Cache is global but this doesn't seem to be accurate.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=83487" width="1" height="1"&gt;</content><author><name>jakeashcraft</name><uri>http://weblogs.asp.net/members/jakeashcraft.aspx</uri></author></entry><entry><title>ASP.NET Road Show notes</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/archive/2004/01/20/60499.aspx" /><id>http://weblogs.asp.net/jakeashcraft/archive/2004/01/20/60499.aspx</id><published>2004-01-20T07:06:00Z</published><updated>2004-01-20T07:06:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Greg was kind enough to provide some notes that he took at the &lt;A href="http://www.asp.net/roadshow"&gt;ASP.NET Road Show &lt;/A&gt;event.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;------------------------&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;ASP.NET EXPOSED 01/15/04&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Part I: A Brief Intro to ASP.NET&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;ASP.NET Tips and Tricks&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Part II: Preventing attacks, ASP.NET "Whidbey"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Wait page&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Uploading files and to SQL Server&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Cross-site scripting attacks&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;SQL Script injection attack&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Whidbey=.NET 2.0 &amp;amp; VS.NET 2.0&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Contact: &lt;A href="mailto:rhoward@microsoft.com"&gt;rhoward@microsoft.com&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&lt;A href="mailto:rhoward@devadvice.com"&gt;rhoward@devadvice.com&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/rhoward"&gt;&lt;U&gt;&lt;FONT color=#0000ff&gt;&lt;FONT face=Tahoma size=2&gt;http://weblogs.asp.net/rhoward&lt;/FONT&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.asp.net/forums"&gt;&lt;U&gt;&lt;FONT color=#0000ff&gt;&lt;FONT face=Tahoma size=2&gt;Http://www.asp.net/forums&lt;/FONT&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.asp.net/whidbey"&gt;&lt;U&gt;&lt;FONT color=#0000ff&gt;&lt;FONT face=Tahoma size=2&gt;http://www.asp.net/whidbey&lt;/FONT&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.asp.net/roadshow"&gt;&lt;U&gt;&lt;FONT color=#0000ff&gt;&lt;FONT face=Tahoma size=2&gt;http://www.asp.net/roadshow&lt;/FONT&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Classic ASP: Bad&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Way too much code required&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Applications contain spaghetti code&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Limited language support&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;weak tools&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Deployment can be difficult&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Components were a disaster: to update a component: stop web service, unregister components, register new component, restart IIS.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;ISAPI Filters &amp;amp; ISAPI Extensions&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;ASP.NET:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Dramatically easier to build dynamic web pages: validation, data manipulation, PostBack, State Better support for different clients: rich support for devices Cleaner code organization: code no longer has to be mixed with HTML Declarative server-side UI control model: great way to encapsulate functionality Rich extensibility model: Extend ASPNET for your custom solutions&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;ASP.nET worker process:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;ASP.NET runs inside a dedicated worker process - it's not part of IIS other than request/response.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Modules-like an ISAPI filter&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Page Handler-gets the page off the disk or cache ASPX Engine - takes files, DLLs assemblies and code-behind and makes a single class file and puts it into cache. The page class is JIT compiled based on the processor architecture (Centrino, Athlon) compile in memory and then generate the response.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;On 2nd request it goes straight into the class instance in memory.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Strong-typing variables are key to performance of asp.net vs. asp classic.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;It's not necessary to use VS.NET&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Remember the ASP.NET Trace object that allows the trace.write method. It won't write to the page unless you turn the tracing on.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&amp;lt;%@ page trace="true" %&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Cross-site scripting attacks (XSS): these occur when someone enters data that includes angle brackets, with and without the percent signs. It is possible to turn off the XSS catcher, look at the notes later.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Development Tips &amp;amp; Tricks:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;File Uploading: Built-in file upload support - No posting acceptor required &amp;amp; no third party components required.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Request.PhysicalApplicationPath&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Path.GetFileNam(MyFile.PostedFile.Filename)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Exception!! Because the directory hasn't been created yet!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;By default ASp.NET cannot write to your file system!!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;You have to grant asp.net the privilege to write to your disk.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The maximum upload size is 4megs because a large file can serve as a denial of service attack.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&amp;lt;system.web&amp;gt;&amp;lt;maxlengh can be changed in global.asax.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Don't make your directories accessible because it's possible for someone to upload to that directory executable code, some of which may be able to grab database passwords, etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;FTP is better for huge upload files.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Otherwise some asp.net threads will e waiting around doing nothing. If you get a ton of uploads, threads will be taken up doing that work while other work stacks up in a queue. Not good.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Use a dedicated server to do file uploads is a good solutions - get it out of your main application path.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Or, you could have it run in its own process, so that the regular threads can process regular web requests.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;enctype="multipart/form-data" is important to use in the form attribute for an upload form.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;It's possible to upload files into SQL server. You can get the content type. This way, you can tell the browser what type of data is being sent back down. So something like IE can open its version of Excel or Word, etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;This way, you man never need to write anything out to the disk, you can just write it to SQL server.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;You can get an inputstream.length and the content-type and then dynamically construct a parameterized SQL statement.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;response.contenttype&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;and response.outputstream.write()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Use of stored procedures is recommended whenever possible. Otherwise people can put escape statements into the SQL being run.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Less secure are those queries that are built dynamically from text statements.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Small/Large object mapping if under&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;ASP.NET Exposed #2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Image Generation&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Rich server image generation&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Read/write any standard IO Stream&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;System.Drawing&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Dynamically generate GIFs/JPGs from .aspx Use ASP.NET Page Sets content type to image/fig&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Keep in mind output caching when you're making dynamic images.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;output Cache&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&amp;lt;%@ OutputCache Duration="60" VaryByParam="none" %&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Page Output Caching&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Cache contents of page to memory&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Reused cached page on subsequent requests.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Microsoft Application enter Test ships with Enterprise or you can use Web Stress Tool from MSDN.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;You can set up a test script and then run it, it will start throwing load against the application. You can see that it's doing the # of requests per second. Here's how you can test output caching.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The difference in performance is absolutely phenomenal.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;IIS 6 also has kernel caching - which is even faster than before. In tests they're more likely to bump into NIC or bandwidth ceilings than in web server performance ceilings.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;You could set the duration very low - like one second, which forces the page to run fully from code, the performance gains are still nearly as impressive as when using duration=60&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Browser progress Page:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Expedia style "searching" page&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Implementation: intermediate PageLoading.aspx page &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Thread.sleep(10000) can simulate a work process.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Using JavaScript.....&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;has no server-side code:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;body onLoad&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;frame1.document.location=pleasewait.htm - a moving image that says "please wait"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;(you can also get this code from the road show website in case you forget to type in something)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Whidbey has asynchronous thread work. It can start a process, then free up the thread while the process is running, then it can start up again.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Two types of attacks&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;system level attacks&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Exploit vulnerabilities in web servers&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;ISAPI DLL buffer overflows (code red/Nimda) IIS Unicode directory traversal (SadMind)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Solution: Up-to-date security patches&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Application-level attacks&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Exploit vulnerabilities in your code&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Solution: code against them&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;SQL Injection Attacks&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Exploits unfiltered inputs&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Input from &amp;lt;form&amp;gt; tags&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;i.e. a login scenario:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Don't run your connection as the SA account Make sure only one record is matched for the login, not many.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;If they know you're using dynamic SQL they can pass in OR statements that will make your statement evaluate to TRUE!!!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;'"--- could halt a SQL statement&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;a') union select l:-- could also work..&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Maybe even an exception or a lot of detail.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;asp.net's website ran as the SA account! Hahahaha!!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Any situations in your app where you can dynamically create SQL statements, make sure it can't be attacked via the form and OR, or UNION statements.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;You could have JavaScript entered into the form, then you could open an activex control that could pick up the user's cookies, or make a call to YOUR (the hacker's ) server for assistance.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;This can be prevented in .net 1.1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;by using request validation. Page validation="true" is the default and checks for brackets i.e. &amp;lt;script&amp;gt; etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;You can capture the exception message and keep track of what someone is trying to do to you.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Always do your own checks on the input. &amp;lt;script&amp;gt;&amp;lt;embed&amp;gt;&amp;lt;object&amp;gt; tags are dangerous, but if you can, just code for what you'll allow - now what you intend to disallow.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Credential Storage: Salted hash passwords - look at the slides for this info - he's passing over it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Overview Whidbey:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Firstly, it's backward-compatible with asp.net 1.1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Overview: rich data edition against business objects output caching....&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Themes:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Developer productivity: reduce code by 2/3rds Enable rich scenarios not easily possibly today.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Better administration and management.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;File-based and SQL data caching. Asp.net takes data from db and runs it from memory until there's a change in the database.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;There are also new templates of apps.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Cassini is included so that you don't need IIS however you can't serve outside the local box, however, you can start building and debugging.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The new building block APIs:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Membership objects, Rolemanager, Personalization objects. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Partial classes: part of a class can be defined in one assembly or file and in another which is&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;ASP.NET Exposed #3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Site navigation database caching, management. So no having to go through the global.asax file.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The provider model design pattern connects the new objects to the data stores: SQL, Oracle, Active Directory.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;There is the new *.master page&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;in addition to the intellisense, there's the statement completion feature.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;sqldependency property to outputcaching.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;----------------------------------&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Greg was obviously not sleeping during the presentation!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=60499" width="1" height="1"&gt;</content><author><name>jakeashcraft</name><uri>http://weblogs.asp.net/members/jakeashcraft.aspx</uri></author></entry><entry><title>ASP.NET Road Show</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/archive/2004/01/19/60354.aspx" /><id>http://weblogs.asp.net/jakeashcraft/archive/2004/01/19/60354.aspx</id><published>2004-01-19T22:44:00Z</published><updated>2004-01-19T22:44:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;I attended the &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:Street w:st="on"&gt;&lt;st1:address w:st="on"&gt;ASP.NET Road&lt;/st1:address&gt;&lt;/st1:Street&gt; Show this past Thursday so I thought I would give my 2 cents.&lt;/SPAN&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;First of all, Rob Howard is awesome. He is a very good presenter and very knowledgeable. However, I was a little bored at the presentation. The first part which lasted a little over an hour was specifically on the basics of ASP.NET. After the first part the content got a little better but still wasn't what I had expected. Rob covered a great deal about security holes and how to use .NET to help plug these holes. Some of the content didn't even have anything to do with .NET specifically. For example, Rob showed a sample app on how to build a progress screen using JavaScript. Not sure where that came&amp;nbsp;from but it was cool.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;After the second bit, the good stuff came...Whidbey! This was the most exciting portion of the whole event and probably the only reason why I went in the first place. There were lots of cool features built into the new version but one of the cool things that I enjoyed seeing was the page inheritance that is built into ASP.NET 2.0. I have read a lot about it but actually seeing it work was much better. That is definitely going to save me time in the future.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;All in all, the event was good. Everyone got a free book that Rob co-authored and a chance to win a Pocket PC. &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;The advertisement for the event stated it as &amp;#8220;&lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY: Tahoma"&gt;This is not going to be high-level marketing fluff!&lt;/SPAN&gt;&lt;/STRONG&gt;&amp;#8221; I should have read a little further though because below that it says &amp;#8220;We've designed a 3.5 hour workshop that delivers the technical knowledge you need to start developing secure, next generation Web applications with ASP.NET and Visual Studio .NET&amp;#8221;. So I guess it was targeted at people who maybe aren't as familiar with .NET.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;And that's my 2 cents!&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=60354" width="1" height="1"&gt;</content><author><name>jakeashcraft</name><uri>http://weblogs.asp.net/members/jakeashcraft.aspx</uri></author></entry><entry><title>Server.MapPath()</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/jakeashcraft/archive/2004/01/13/58380.aspx" /><id>http://weblogs.asp.net/jakeashcraft/archive/2004/01/13/58380.aspx</id><published>2004-01-14T00:09:00Z</published><updated>2004-01-14T00:09:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;This always bites me in the ass. When you need to call Server.MapPath from a standard class, you must call it from the current context.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;&lt;STRONG&gt;Example:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;System.Web.HttpContext.Current.Server.MapPath(&amp;#8220;somefile.xml&amp;#8220;);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;This is more of a note for my future reference.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=58380" width="1" height="1"&gt;</content><author><name>jakeashcraft</name><uri>http://weblogs.asp.net/members/jakeashcraft.aspx</uri></author></entry></feed>
