<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkYHQng8cSp7ImA9WxBQEko.&quot;"><id>tag:blogger.com,1999:blog-10884228</id><updated>2010-01-11T20:22:13.679-08:00</updated><title>A New Development</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ANewDevelopment" /><feedburner:info uri="anewdevelopment" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><entry gd:etag="W/&quot;CUYAR3Y9cCp7ImA9WxZSGEg.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-3831508281434419319</id><published>2008-01-31T21:52:00.000-08:00</published><updated>2008-02-01T00:05:46.868-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-01T00:05:46.868-08:00</app:edited><title>Installing Subtext on Vista - Request is not available in this context</title><content type="html">&lt;p&gt;Just a quick note when you are installing &lt;a href="http://www.subtextproject.com/"&gt;Subtext&lt;/a&gt; on Vista. After you add a webiste in IIS7, set your connection string, then browse to your site, you may get this error:&lt;/p&gt;

&lt;blockqoute&gt;System.Web.HttpException: Request is not available in this context&lt;/blockqoute&gt;

&lt;p&gt;To fix it open IIS, right-click your site, select Advanced Settings, change the Application Pool to Classic .NET AppPool.&lt;/p&gt;

&lt;p&gt;After scratching my head twice over this same problem, I decided to make a quick entry. I hope this helps someone else.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-3831508281434419319?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/3831508281434419319/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=3831508281434419319" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/3831508281434419319?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/3831508281434419319?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2008/01/installing-subtext-on-vista-request-is.html" title="Installing Subtext on Vista - Request is not available in this context" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;Ck8ASXo6fyp7ImA9WxZSEkg.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-794462387429956765</id><published>2008-01-04T13:10:00.000-08:00</published><updated>2008-01-25T00:47:28.417-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-25T00:47:28.417-08:00</app:edited><title>Convert List&lt;A&gt; to List&lt;B&gt; with a Lambda One-Liner or LINQ</title><content type="html">C# 3.0 is really cool. There are some great new language features, including lambdas. Lambdas are basically an easy way to write anonymous functions.&lt;br /&gt;&lt;br /&gt;


Suppose you have two types: Tree and Pine. Pine inherits from Tree. Now suppose you have a List&amp;lt;Tree&amp;gt;, but you know that every object in the list is of type Pine. It would be nice to convert this list to a List&amp;lt;Pine&amp;gt;. There are several ways to do this. A foreach loop might be the first to come to mind. This would take a few lines of code.  Suppose trees is a List&amp;lt;Tree&amp;gt; and pines is a List&amp;lt;Pine&amp;gt;.
&lt;code&gt;&lt;pre&gt;
  foreach (Tree tree in trees)
  {
    pines.Add((Pine)tree);
  }
&lt;/pre&gt;&lt;/code&gt;
Another way to convert the list is to use the ConvertAll&amp;lt;T&amp;gt; method of List&amp;lt;T&amp;gt;.  It calls for a delegate as an argument.  This would be a bit burdensome if there wasn't an easy way to write an inline delegate, but with C# 3.0 there is!  This is what a lambda can do.  Check it out:
&lt;code&gt;&lt;pre&gt;
  pines = trees.ConvertAll&amp;lt;Pine&amp;gt;(t =&amp;gt; (Pine)t);
&lt;/pre&gt;&lt;/code&gt;
That converts a List&amp;lt;Tree&amp;gt; to a List&amp;lt;Pine&amp;gt;.  Is that not sweet?  What this lambda is doing is returning an anonymous function that takes t as a parameter and returns (Pine)t.  The compiler figures out that t is of type Tree.  ConvertAll then uses this function to convert each element of the list.&lt;br /&gt;&lt;br /&gt;

Now suppose your list of trees had some Tree objects and some Pine objects.  The above example would fail on the Tree objects since they cannot be cast to Pine objects.  In the foreach loop, it would be easy to skip over the ones that wouldn't cast:
&lt;code&gt;&lt;pre&gt;
  foreach (Tree tree in trees)
  {
    if (tree is Pine)
    {
      pines.Add((Pine)tree);
    }
  }
&lt;/pre&gt;&lt;/code&gt;
With the lambda, it isn't as straight-forward, but you can do it by using the FindAll method:
&lt;code&gt;&lt;pre&gt;
  pines = trees.FindAll(t =&amp;gt; (t is Pine)).ConvertAll&amp;lt;Pine&amp;gt;(t =&amp;gt; (Pine)t);
&lt;/pre&gt;&lt;/code&gt;
The problem with this is that the loop is iterated twice.&lt;br /&gt;&lt;br /&gt;

A nicer way is to use the new LINQ capabilities:
&lt;code&gt;&lt;pre&gt;
  pines = (from t in trees where t is Pine select (Pine)t).ToList&amp;lt;Pine&amp;gt;();
&lt;/pre&gt;&lt;/code&gt;

Now, we don't even see a lambda in our code (but C# uses them behind the scenes with LINQ).  In this statement, we are getting all the Tree objects from trees that are of type Pine.  Then, before we get select them out, we cast them to the Pine type.  The final thing to do is convert the IEnumerable to a List&amp;lt;Pine&amp;gt; using the ToList method.&lt;br /&gt;&lt;br /&gt;

As it turns out, LINQ is useful for more than just getting data from SQL Server.  However, if you aren't too keen on the LINQ syntax, there are still a number of useful extension methods in the System.Linq namespace.  Using OfType() and ToList(), we can rewrite the code as:
&lt;code&gt;&lt;pre&gt;
  pines = trees.OfType&amp;lt;Pine&amp;gt;().ToList&amp;lt;Pine&amp;gt;();
&lt;/pre&gt;&lt;/code&gt;
With this we are back to iterating the loop twice, but it is nice that just by adding a "using System.Linq" line to the top of our file, these new methods are tacked on to our List&amp;lt;Tree&amp;gt; (and all other lists for that matter).  Again, extension methods are a new language feature.  You can &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx"&gt;write your own extension methods too&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

There are lots of other cool, new language features in C# 3.0, so go check them out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-794462387429956765?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/794462387429956765/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=794462387429956765" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/794462387429956765?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/794462387429956765?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2008/01/convert-list-to-list-with-lambda.html" title="Convert List&amp;lt;A&amp;gt; to List&amp;lt;B&amp;gt; with a Lambda One-Liner or LINQ" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUIMQ3oyeip7ImA9WB9VEU8.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-3474608502997193124</id><published>2007-11-26T15:20:00.000-08:00</published><updated>2007-11-26T16:33:02.492-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-26T16:33:02.492-08:00</app:edited><title>Help Rid the World of IE6</title><content type="html">&lt;p&gt;You can help web developers make better websites for you to use.  If they aren't wasting their time fixing their sites to work in IE6, they can spend it on making better sites.  Do your part by installing IE7 or FireFox on your family's computers.&lt;/p&gt;

&lt;p&gt;Internet Explorer 6 is old.  IE7 was released over a year ago, but the usage share of IE6 is still at 48% according to &lt;a href="http://www.thecounter.com/stats/2007/November/browser.php"&gt;thecounter.com&lt;/a&gt;.  IE7 is even included in &lt;a href="http://blogs.msdn.com/ie/archive/2006/07/26/678149.aspx"&gt;Window's Automatic Update&lt;/a&gt;, and it still isn't gaining enough ground.&lt;/p&gt;

&lt;p&gt;But what's the problem?  If someone wants to browse the web with a dilapidated browser why should we stop them?  Well, because it affects everybody.  In many places, you can't just drive any car you want to.  Your car has to meet emissions standards.  If it doesn't, it pollutes the air more than it should and makes breathing difficult for everyone.  Laws were set up to make the air a little better for everyone's lungs.  Likewise, if you are using an old browser you are putting off emissions.  These emissions are additional work for web developers.  IE6 has a number of CSS problems that don't exist in IE7, Firefox, or Safari.  All browsers have some rendering problems, but IE6 has &lt;a href="http://www.positioniseverything.net/explorer.html"&gt;more and worse problems&lt;/a&gt;.&lt;/p&gt;  

&lt;p&gt;The good news is that IE7 is much better.  The bad news is that not enough people are installing it.  IE6 is at 48% usage share, while IE7 is at 32%.  IE5 is finally obsolete with only 1% market share.&lt;/p&gt;

&lt;p&gt;The simple easy thing you can do is to abolish IE6 in your own sphere of influence.  When you go to your parent's house for Christmas this year, bring IE7 and FF on a flash drive with you (or download it there). Here are the links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx"&gt;Download Internet Explorer 7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/?from=getfirefox"&gt;Download FireFox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Installing IE7 should be your first choice since it completely obliterates IE6 (of course you could also install FireFox, but please make sure to get rid of IE6, that's our goal). However, you can only install IE7 on XP SP2 and Vista.  If your mom's computer is running Windows 98 or some other old OS, the next best option is to install FireFox, make it the default browser, and delete the Internet Explorer shortcuts.  Better yet, buy her a new computer.&lt;/p&gt;

&lt;p&gt;Perhaps if we all work to wipe out IE6 this Christmas, we can enjoy a more standards friendly web next year.  Merry Christmas!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-3474608502997193124?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/3474608502997193124/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=3474608502997193124" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/3474608502997193124?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/3474608502997193124?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2007/11/help-rid-world-of-ie6.html" title="Help Rid the World of IE6" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A04NR3w_eip7ImA9WB9REk0.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-5095861362352641013</id><published>2007-09-09T15:02:00.000-07:00</published><updated>2007-10-12T10:26:36.242-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-12T10:26:36.242-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Vista" /><category scheme="http://www.blogger.com/atom/ns#" term="IE6" /><title>Testing ASP.NET 2.0 Apps In IE 6 On Vista</title><content type="html">&lt;p&gt;I have Visual Studio 2005 and 2008 Beta 2 installed on Vista Home Premium.  I recently made a site that works fine in IE 7, Firefox, and Safari, but not in IE 6.  It renders horribly.  I can only guess that it's the broken box model, or something to do with floats.  I need to test it, but how?&lt;/p&gt;

&lt;p&gt;It isn't as simple as you might think.  You can't install IE 6 and IE 7 side-by-side.  You have to install Microsoft Virtual PC 2007, load an XP image with IE 6, and install the modified Cassini web server from ultiDev on Vista.  Lets get to the details.&lt;/p&gt;

&lt;h3&gt;Download Stuff&lt;/h3&gt;
&lt;p&gt;First we need to download a lot of bits.  Cassini and VPC 2007 are small, but the VPC image is pretty big.  Dowload these files:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64-B5F1-73D0A413C8EF&amp;displaylang=en"&gt;XP VPC Image with IE 6&lt;/a&gt; (there are two downloads, you need the IE6_VPC.EXE one)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=04D26402-3199-48A3-AFA2-2DC0B40A73B6&amp;displaylang=en"&gt;VPC 2007&lt;/a&gt; It says that it's not compatible with Vista Home Premium, but it works fine.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ultidev.com/download/default.aspx"&gt;Cassini Web Server&lt;/a&gt; Get the ASP.NET 2.0 one (unless you are old school)&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;You'll have to wait a while for that first one, but after you get the files we'll move on to installing VPC.&lt;/p&gt;

&lt;h3&gt;Installing Virtual PC 2007 and Running the Image&lt;/h3&gt;
&lt;p&gt;Run the setup program, and take all the defaults.  After it is installed, you'll have to run the IE6_VPC.EXE to extract the VPC Image.  After it is extracted, you'll have a large .vhd file.  This is the virtual hard drive that contains XP.&lt;/p&gt;

&lt;p&gt;We have to create a new virtual machine, so run Virtual PC 2007.  On the Console, click New.  Choose "Create a Virtual Machine", name it, choose XP as the OS, and I reccomend bumping up the RAM to 512 MB if you can.  Then, choose and existing hard disk, and navigate to the one you just extracted.&lt;/p&gt;

&lt;p&gt;After you boot up the virtual machine, we'll enable the page file for better performance.  Click Control Panel, System, Advanced, click Settings under Performance.  Click Advanced, under Virtual Memory click Change.  Select System Managed Size, click Set, then clik OK.  Exit the System settings.&lt;/p&gt;

&lt;p&gt;Now we have to turn off the proxy settings in IE.  Open IE (it's IE 6!) and click Tools, Internet Options, Connections, LAN Settings.  Uncheck "Use a Proxy Server for Your LAN".&lt;/p&gt;

&lt;p&gt;So far, so good.  You should be able to get to Google and other web sites now, but you'll have problems connecting to the built-in web server in Visual Studio.  It's not designed to serve pages to other computers.  That's why we need the Cassini Web Server.  If you have Vista Ultimate or Business you could use IIS and skip installing the Cassini web server.&lt;/p&gt;

&lt;h3&gt;Installing and Configuring Cassini&lt;/h3&gt;
&lt;p&gt;Run the Cassini setup program, and choose all the defaults.  After it is installed, run the Cassini Web Server Explorer.  It will fire up a locally hosted web application.  Click on Register to setup a new hosted application (the one you view on IE6).  This screen can be somewhat annoying because it wipes out your file entry when you choose other options.  Just navigate to the default.aspx file of your application after the other options are set.&lt;/p&gt;

&lt;p&gt;First, either use a system assigned port or select a port.  I chose port 80 so my ASP.NET app would be the default on the machine, but I don't think you have to.  Click Generate to generate some settings, Set the Name, and navigate to the default.aspx page of your web app.  I left the Description blank, but add one if you like.  Click Save.&lt;/p&gt;

&lt;p&gt;You should now be able to get to the web app from Vista.  Your host OS, that is.  Open a browser and type "localhost" in the address bar.  If you didn't use port 80, and you used, say 65355 instead, type "localhost:65355" in the address bar.  The site should open.  If it didn't then something is wrong.&lt;/p&gt;

&lt;h3&gt;Connecting to Cassini from IE 6&lt;/h3&gt;
&lt;p&gt;In order for your Virtual PC to access Cassini on your host machine, you'll have to either disable the firewall in Vista, or create a rule to allow access.  I just disabled it - both the Domain Profile, and the Private Profile to get it working.&lt;/p&gt;

&lt;p&gt;Now you have to find out the IP address of your host OS, so open a command prompt and type "ipconfig".  Your IP address should be listed after IPv4 address.  Hopefully you are not using IPv6.  It has some bugs (at least I had problems with it).  Remember this address.  Mine was 192.168.10.200.&lt;/p&gt;

&lt;p&gt;Now back on the VPC.  Open IE 6, and type the IP address of your host computer into the address bar.  Again, if you specified a port other than 80, you'll have to type the IP address followed by a colon and the port.  e.g. "192.168.10.200:65355".  The site should open, and now you can debug it.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;After some headaches, a lot of downloading, and configuration, you can now test on IE 6.  For complete browser testing, I reccomending testing your site with IE 6, IE 7, the latest of Firefox, the latest of Opera, and the latest of Safari.  Yes, a &lt;a href="http://www.apple.com/safari/"&gt;Safari 3 Beta is now available for Windows&lt;/a&gt;.  Good luck.  Maybe one day browser testing will be a little easier.  We can only hope.&lt;/p&gt;

&lt;h3&gt;Update 10/12/2007&lt;/h3&gt;
I found out that you can install IIS 7 on Vista Home Premium.  It is limited, but it should work fine for development.  If you install IIS, you won't have to install the Cassini web server.  The one catch is that NT Authentication will not work out of the box, but there is &lt;a href="http://support.microsoft.com/kb/937523"&gt;a fix&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-5095861362352641013?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/5095861362352641013/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=5095861362352641013" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/5095861362352641013?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/5095861362352641013?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2007/09/testing-aspnet-20-apps-in-ie-6-on-vista.html" title="Testing ASP.NET 2.0 Apps In IE 6 On Vista" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;CU4FQ3c7fip7ImA9WB5bFEk.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-7931172107273135948</id><published>2007-08-29T20:09:00.000-07:00</published><updated>2007-08-29T20:18:32.906-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-29T20:18:32.906-07:00</app:edited><title>Creating SPF Records in GoDaddy for GAFYD</title><content type="html">Sometimes by trying to simplify things companies make them harder.  I wanted to create an SPF Record for my domain.  I'm using Google Apps For Your Domain (GAFYD) to host the email, and Google's instructions are simply:

&lt;blockquote&gt;To set your domain's SPF record, publish the following TXT record on the DNS resource: v=spf1 include:aspmx.googlemail.com ~all&lt;/blockquote&gt;

Well, with GoDaddy's "easy" management tool, you can't just specify that.  They have a wizard for you to use.  By trial and error, I finally got the right SPF record.  Here's how:

&lt;ul&gt;
&lt;li&gt;Login, and go to the "Total DNS Control Panel"&lt;/li&gt;
&lt;li&gt;Under the TXT section, click "Add SPF Record"&lt;/li&gt;
&lt;li&gt;Select "An ISP or other mail provider" and click OK&lt;/li&gt;
&lt;li&gt;Select the "Outsourced" tab, and enter aspmx.googlemail.com as the outsourced domain&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;li&gt;GoDaddy will display a confirmation with the correct SPF record listed.&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;/ul&gt;

There you go.  It would have been easier if there was no wizard and you could just cut and paste it.  Hopefully, my email doesn't quit working...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-7931172107273135948?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/7931172107273135948/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=7931172107273135948" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/7931172107273135948?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/7931172107273135948?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2007/08/creating-spf-records-in-godaddy-for.html" title="Creating SPF Records in GoDaddy for GAFYD" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total></entry><entry gd:etag="W/&quot;DkcCRHc5eip7ImA9WB5bFEk.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-116319673644560475</id><published>2006-11-10T13:50:00.000-08:00</published><updated>2007-08-29T20:21:05.922-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-29T20:21:05.922-07:00</app:edited><title>Crystal Reports - Access is denied</title><content type="html">Crystal Reports can be frustrating.  Especially the Crystal Reports Engine.

In an ASP.NET 2.0 page I'm trying to load a Crystal Report using the ReportDocument.Load() method, and I kept getting the error: 

&lt;pre&gt;&lt;code&gt;
Access is denied.
System.Runtime.InteropServices.COMException: Access is denied.
&lt;/code&gt;&lt;/pre&gt;

The asp.net user already had permission to the .rpt file, but what I didn't know was that Crystal Reports creates its own temp file during the Load() method.  This file is put in the directory specified by the environment variable "TMP".  You can view the contents of this variable in code by using this method: 

&lt;pre&gt;&lt;code&gt;
System.Environment.GetEnvironmentVariable("TMP")
&lt;/code&gt;&lt;/pre&gt;

Giving the ASP.NET user Full Control to this directory will work, but what I really wanted was for Crystal Reports to use a directory that I specified in the web.config file.  To do this I set the environment variable, loaded the ReportDocument, and changed the environment variable back.

&lt;pre&gt;&lt;code&gt;
...

'Get the Crystal Reports Temp directory from web.config
Dim TempRoot As String = ConfigurationManager.AppSettings("CRTempDir")

Dim oldTmp As String = System.Environment.GetEnvironmentVariable("TMP")
System.Environment.SetEnvironmentVariable("TMP", TempRoot)

Dim rpt as New ReportDocument()
rpt.Load("myReport.rpt")

System.Environment.SetEnvironmentVariable("TMP", oldTmp)

...

'Be sure to call this as it will delete your temporary .rpt file
rpt.Dispose()
&lt;/code&gt;&lt;/pre&gt;

When you run your web page, Crystal Reports will create a temporary .rpt file using the name of your .rpt and adding a Guid to the end of it.  Crystal Reports also writes a .tmp file for some reason.  Once Dispose() is called on the ReportDocument both of these temp files will be deleted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-116319673644560475?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/116319673644560475/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=116319673644560475" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/116319673644560475?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/116319673644560475?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2006/11/crystal-reports-access-is-denied.html" title="Crystal Reports - Access is denied" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;DUACQng5fip7ImA9WBVbEk0.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-113820764993558360</id><published>2006-01-25T08:34:00.000-08:00</published><updated>2006-01-25T08:49:23.626-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-01-25T08:49:23.626-08:00</app:edited><title>Seperate Processes Sometimes Break ASP.NET Session</title><content type="html">I ran across an interesting problem this morning.  A user was browsing the &lt;a href="http://www.co.missoula.mt.us/owner"&gt;Property Information System&lt;/a&gt;, and when he clicked on the map to identify a property the popup window would launch but it would display an ASP.NET Error Message, "Object reference not set to an instance of an object."  I examed the source, and on page load the popup gets stuff from the ASP.NET session.&lt;br /&gt;
&lt;br /&gt;
It was behaving like his session had timed out, even though it shouldn't have for 20 minutes.&lt;br /&gt;
&lt;br /&gt;
After some time on the phone we managed to track it down to a setting in Windows Explorer (not Internet Explorer).  In Tools|Folder Options on the View tab, there is a setting called "Launch folder windows in a seperate process."  As it turns out, if you have this set, and type the URL into the address bar of Windows Explorer, popups launch in a seperate process.  This was creating a new session on the server.  So any session information from the parent window was not available to the popup window.&lt;br /&gt;
&lt;br /&gt;
The solution: Don't use Windows Explorer that way (launch I.E. for browsing) or don't rely on the session like we used to say back in the days of ASP 3.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-113820764993558360?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/113820764993558360/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=113820764993558360" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/113820764993558360?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/113820764993558360?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2006/01/seperate-processes-sometimes-break.html" title="Seperate Processes Sometimes Break ASP.NET Session" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUcAQ3g7eCp7ImA9WBVbEk0.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-113820273449077082</id><published>2006-01-25T07:15:00.000-08:00</published><updated>2006-01-25T07:30:42.600-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-01-25T07:30:42.600-08:00</app:edited><title>My CSS References</title><content type="html">I was going to just email this to a couple of co-workers, but I decided it would make a decent little blog post.  These are the some of the CSS sites that I read and could help you out with learning and working with CSS.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Good Sites:&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://cssvault.com/"&gt;CSS Vault&lt;/a&gt; (lots of good examples)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://bluerobot.com/"&gt;Blue Robot&lt;/a&gt; (free templates)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.glish.com/css/"&gt;Glish&lt;/a&gt; (free templates, good examples)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.csszengarden.com/"&gt;CSS Zen Garden&lt;/a&gt; (a classic, 1 HTML page styled by your choice of CSS)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.positioniseverything.net/index.php"&gt;Position is Everything&lt;/a&gt; (they talk a lot about hacks, in fact Holly Bergevin is the creator of the "Holly Hack")&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.dezwozhere.com/links.html"&gt;A Bunch of CSS Links&lt;/a&gt; (a bunch of links, important ones highlighted)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp"&gt;MSDN&lt;/a&gt; (I use this for reference a lot)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Interesting Articles:&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.contentwithstyle.co.uk/Articles/17/a-css-framework"&gt;A CSS Framework&lt;/a&gt; (About making a reusable CSS to build upon)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.sitepronews.com/archives/2005/july/20.html"&gt;The 10 Best Resources for CSS&lt;/a&gt; (a good article with more links, some of which are here)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.tjkdesign.com/articles/liquid.asp"&gt;One clean HTML markup, many layouts&lt;/a&gt; (this is cool because he doesn't use any hacks)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.cssplay.co.uk/menu/old_master.html"&gt;Image Map for Detailed Information&lt;/a&gt; (a neat little example)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Blogs and the like&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.dustindiaz.com/"&gt;Dustin Diaz&lt;/a&gt; (a good writer, he talks about design, CSS, and Javascript)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.alistapart.com/"&gt;A List Apart&lt;/a&gt; (good articles, multiple contributers)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.contentwithstyle.co.uk/"&gt;Content with Style&lt;/a&gt; (another great one with multiple contributers)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.mezzoblue.com/"&gt;Mezzoblue&lt;/a&gt; (beautiful colors and some good articles)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.jasonsantamaria.com/"&gt;Jason Santa Maria&lt;/a&gt; (he mostly talks about page design, but I really like his post on &lt;a href="http://www.jasonsantamaria.com/archive/2004/05/24/grey_box_method.php"&gt;Grey Box Methodology&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.jasongraphix.com/"&gt;Jason Graphix&lt;/a&gt; (he mostly talks about page design too)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.clagnut.com/"&gt;Clagnut&lt;/a&gt; (a nice looking site built with CSS, and some articles)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-113820273449077082?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/113820273449077082/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=113820273449077082" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/113820273449077082?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/113820273449077082?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2006/01/my-css-references.html" title="My CSS References" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DEYDQX87fip7ImA9WBVUEEw.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-113701543045920728</id><published>2006-01-11T13:35:00.000-08:00</published><updated>2006-01-11T13:49:30.106-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-01-11T13:49:30.106-08:00</app:edited><title>Dynamically Add a Stylesheet Reference to a MasterPage</title><content type="html">&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:"";
 margin:0in;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:"Times New Roman";
 mso-fareast-font-family:"Times New Roman";}
@page Section1
 {size:8.5in 11.0in;
 color: black;
 margin:1.0in 1.25in 1.0in 1.25in;
 mso-header-margin:.5in;
 mso-footer-margin:.5in;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
--&gt;
&lt;/style&gt;

&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:"Table Normal";
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-parent:"";
 mso-padding-alt:0in 5.4pt 0in 5.4pt;
 mso-para-margin:0in;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:10.0pt;
 font-family:"Times New Roman";}
&lt;/style&gt;

Today I was having a little problem with ASP.NET 2.0.  My site uses a Master Page and a couple of .css files.  The problem 

was that I wanted one stylesheet to be used on the whole site, and an additional stylesheet to be used on one page.  The 

problem was that in a child page I couldn't find a way to add an HTML link element, since the page's head section was 

outside of the content.&lt;br /&gt;
&lt;br /&gt;
What I ended up doing was adding a public method in the Master Page that I could call in the child's Load event to add a 

stylesheet reference.  It seems to work well so far.  I don't know if this is the best approach, but I couldn't find much 

else out there.&lt;br /&gt;
&lt;br /&gt;
Here are the details:&lt;br /&gt;
&lt;br /&gt;
MyMasterPage.master is the site-wide master page, in it you will need to add an id to the &amp;lt;head /&amp;gt; element so you can get to it in the code behind:
&lt;div class="code"&gt;
&lt;div class=Section1&gt;
&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";color:blue;mso-no-proof:yes'&gt;&amp;lt;&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";color:maroon;mso-no-proof:
yes'&gt;head&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";
mso-no-proof:yes'&gt; &lt;span style='color:red'&gt;id&lt;/span&gt;&lt;span style='color:blue'&gt;=&amp;quot;MyMasterPageHead&amp;quot;&lt;/span&gt;
&lt;span style='color:red'&gt;runat&lt;/span&gt;&lt;span style='color:blue'&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";
color:blue;mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";
color:blue;mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";
color:blue;mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;
In the code behind of MyMasterPage you will need to add the following method:
&lt;div class="code"&gt;
&lt;div class=Section1&gt;
&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";color:blue;mso-no-proof:yes'&gt;Partial&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt; &lt;span
style='color:blue'&gt;Class&lt;/span&gt; MyMasterPage&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;  &lt;/span&gt;&lt;span style='color:blue'&gt;Inherits&lt;/span&gt;
System.Web.UI.MasterPage&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;  &lt;/span&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt; &lt;span
style='color:blue'&gt;Sub&lt;/span&gt; AddStyleSheetLink(&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;
fileName &lt;span style='color:blue'&gt;As&lt;/span&gt; &lt;span style='color:blue'&gt;String&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;    &lt;/span&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;
stylesheetLink &lt;span style='color:blue'&gt;As&lt;/span&gt; &lt;span style='color:blue'&gt;New&lt;/span&gt;
HtmlLink&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;    &lt;/span&gt;&lt;span style='color:blue'&gt;With&lt;/span&gt;
stylesheetLink&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;      &lt;/span&gt;.Attributes(&lt;span style='color:maroon'&gt;&amp;quot;href&amp;quot;&lt;/span&gt;)
= fileName&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;      &lt;/span&gt;.Attributes(&lt;span style='color:maroon'&gt;&amp;quot;type&amp;quot;&lt;/span&gt;)
= &lt;span style='color:maroon'&gt;&amp;quot;text/css&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;      &lt;/span&gt;.Attributes(&lt;span style='color:maroon'&gt;&amp;quot;rel&amp;quot;&lt;/span&gt;)
= &lt;span style='color:maroon'&gt;&amp;quot;stylesheet&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;    &lt;/span&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt; &lt;span
style='color:blue'&gt;With&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";color:blue;mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;   
&lt;/span&gt;MyMasterPageHead.Controls.Add(stylesheetLink)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;  &lt;/span&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt; &lt;span
style='color:blue'&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";
color:blue;mso-no-proof:yes'&gt;End&lt;/span&gt;&lt;span style='font-size:10.0pt;
font-family:"Courier New";mso-no-proof:yes'&gt; &lt;span style='color:blue'&gt;Class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";
color:blue;mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";
color:blue;mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";
color:blue;mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Then on your content page, just add the following to the Page.Load event:
&lt;div class="code"&gt;
&lt;div class=Section1&gt;
&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";color:blue;mso-no-proof:yes'&gt;Protected&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt; &lt;span
style='color:blue'&gt;Sub&lt;/span&gt; Page_Load(&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;
sender &lt;span style='color:blue'&gt;As&lt;/span&gt; &lt;span style='color:blue'&gt;Object&lt;/span&gt;,
&lt;span style='color:blue'&gt;ByVal&lt;/span&gt; e &lt;span style='color:blue'&gt;As&lt;/span&gt;
System.EventArgs) &lt;span style='color:blue'&gt;Handles&lt;/span&gt; &lt;span
style='color:blue'&gt;Me&lt;/span&gt;.Load&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt;&lt;span
style='mso-spacerun:yes'&gt;  &lt;/span&gt;&lt;span style='color:blue'&gt;CType&lt;/span&gt;(Master,
MyMasterPage).AddStyleSheetLink(&lt;span style='color:maroon'&gt;&amp;quot;ContentStyle.css&amp;quot;&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";color:blue;mso-no-proof:yes'&gt;End&lt;/span&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";mso-no-proof:yes'&gt; &lt;span
style='color:blue'&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'&gt;&lt;span
style='font-size:10.0pt;font-family:"Courier New";color:blue;mso-no-proof:yes'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Notice that you need to cast the Page's master to the MyMasterPage type so you can call the AddStyleSheetLink() method.&lt;br 

/&gt;
&lt;br /&gt;
That's it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-113701543045920728?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/113701543045920728/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=113701543045920728" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/113701543045920728?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/113701543045920728?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2006/01/dynamically-add-stylesheet-reference.html" title="Dynamically Add a Stylesheet Reference to a MasterPage" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;CUYHQnY9eyp7ImA9WBVbEk0.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-113467819438288212</id><published>2005-12-15T12:12:00.000-08:00</published><updated>2006-01-25T07:32:13.863-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-01-25T07:32:13.863-08:00</app:edited><title>ASP.NET 2.0 Problems</title><content type="html">Wow, has this blog been dead for a while.  I guess it's because I don't consider most little things worth posting here, and any cool big things I don't have the time to type up.  What I think I'm going to try is just dumping stuff here.  I'm in the process of working on converting one of our web apps from ASP.NET 1.1 to 2.0, and there is a lot of cool things to do, and a lot of little problems.  So here's one of the first.&lt;br /&gt;
&lt;br /&gt;
I have a site which uses a couple of .dll's.  The thing compiled fine in ASP.NET 1.1, but I had a problem compiling it in ASP.NET 2.0.  I would get this error:

&lt;div class="code"&gt;Error 1 Could not load file or assembly '&amp;lt;dll&amp;gt;, Version=&amp;lt;version&amp;gt;, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Access is denied. &lt;/div&gt;&lt;br /&gt;
I'm using impersonation on the application so it can get to other network resources, so ASP.NET is being run under the user AspnetMyUser.  That's not really the name, but the real name isn't important.  The problem was that this user couldn't load the .dll's because he didn't have permission.  So I just gave the user Modify rights to the temporary ASP.NET folder located here:

&lt;div class="code"&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
&lt;/div&gt;&lt;br /&gt;
Now everything works great.  I had to do the same thing for 1.1, but since there is a new temp directory for 2.0 I had to give the user rights to it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-113467819438288212?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/113467819438288212/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=113467819438288212" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/113467819438288212?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/113467819438288212?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2005/12/aspnet-20-problems.html" title="ASP.NET 2.0 Problems" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;D0ENQnk5eyp7ImA9WBdQFU0.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-111350569372321200</id><published>2005-04-14T12:02:00.000-07:00</published><updated>2005-04-14T12:08:13.723-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-04-14T12:08:13.723-07:00</app:edited><title>Send Error Report</title><content type="html">So what happens if you click yes to "Send Error Report?" when a program crashes?  &lt;a href="http://blogs.msdn.com/oldnewthing/archive/2005/04/12/407562.aspx"&gt;Raymond&lt;/a&gt; looks at it, and fixes your problem.  I always knew it wasn't such a bad, loss of privacy thing, to send those.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-111350569372321200?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/111350569372321200/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=111350569372321200" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/111350569372321200?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/111350569372321200?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2005/04/send-error-report.html" title="Send Error Report" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;CUcNRns6fip7ImA9WBVbEk0.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-110875443061410134</id><published>2005-02-18T11:06:00.000-08:00</published><updated>2006-01-25T07:31:37.516-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-01-25T07:31:37.516-08:00</app:edited><title>Better mailto Links</title><content type="html">I was just looking through the stat log on my personal blog, and it looks like I'm already getting hits by email harvesters.  The referrers were other blogs on blogspot, but people I have never heard of, so out of curiousity I went to their sites to check them out.  It looks like these people have some of the same interests as me listed in their profile.  Interesting.  So I would venture to say that the harvesting robots now are combing blogs and building email lists that are indexed by interests.  Better marketing I suppose, but who really buys stuff from spam anyway?&lt;br /&gt;&lt;br /&gt;

Well, I was thinking it would be nice if once again we could make mailto links that you could just click on and send an email rather than having to type something like "email me at lance dot fisher at gmail dot com."  (Which, by the way, would not be too hard to write a regular expression to parse.)  I was thinking about writing some javascript to dynamically build the link when someone clicked on it, but before messing with it, I thought I'd do a quick Google search.  &lt;a href="http://myhome.spu.edu/josh/tech/hideemail.html"&gt;Here&lt;/a&gt; is what I came up with.  The link is inserted when the page is rendered, and I bet that those robots aren't rendering every page they comb.  I think it should work.&lt;br /&gt;
&lt;br /&gt;
Not too bad.  So go ahead and email me at .&lt;br /&gt;
&lt;br /&gt;
Crap, I guess blogspot won't let me put javascript in a post.  Oh well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-110875443061410134?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/110875443061410134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=110875443061410134" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/110875443061410134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/110875443061410134?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2005/02/better-mailto-links.html" title="Better mailto Links" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;CUECQHY4fip7ImA9WBZbFUQ.&quot;"><id>tag:blogger.com,1999:blog-10884228.post-110859359580193541</id><published>2005-02-16T14:38:00.000-08:00</published><updated>2005-02-16T14:41:01.836-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-02-16T14:41:01.836-08:00</app:edited><title>What is this all about?</title><content type="html">I set up this blog to talk about software development issues and processes at Missoula County.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10884228-110859359580193541?l=www.anewdevelopment.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.anewdevelopment.com/feeds/110859359580193541/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10884228&amp;postID=110859359580193541" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/110859359580193541?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10884228/posts/default/110859359580193541?v=2" /><link rel="alternate" type="text/html" href="http://www.anewdevelopment.com/2005/02/what-is-this-all-about.html" title="What is this all about?" /><author><name>lance</name><uri>http://www.blogger.com/profile/07862248519205725303</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06465479866535775424" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
