Scott Hanselman

How to set an IIS Application or AppPool to use ASP.NET 3.5 rather than 2.0

April 1, '08 Comments [42] Posted in ASP.NET | IIS | LINQ
Sponsored By

A question that comes up a lot is this: How do I tell my IIS Application or Virtual Directory to use ASP.NET 3.5 rather than ASP.NET 2.0?

Folks often go into the IIS6 or IIS7 manager and setup an AppPool and see a properties dialog like this, and when the pull down the option, they often expect to see .NET 3.0 and .NET 3.5 in the list and it's not there, and they freak out, rightfully so.

image

Here's an explanation of why this is confusing, and hopefully by the end, it won't be confusing anymore.

Marketing

This is where marketing and reality part ways. I didn't initially like the naming, because I assumed that each major version of the Framework meant a new CLR, but it's growing on me as I understand it more. I get now why they named them this way. Additional fundamentally new functionality has to be named something.

image

.NET 2.0

The meat of .NET is in %windir%\Microsoft.NET\Framework\v2.0.50727. That's where, along with the GAC (Global Assembly Cache) all the libraries and compilers you know and love live. When folks ask "where is .NET" I usually start here.

image

.NET 3.0

The addition of .NET 3.0 didn't mean new compilers or a new CLR. Instead, it's three major new libraries: WCF (Windows Communication Foundation née Indigo), WPF (Windows Presentation Foundation née Avalon) and Windows Workflow or WF.

image

Bottom line: Installing .NET 3.0 doesn't fundamentally change your system in any way you should fear. Your 2.0 apps still run on a system with 3.0 installed. They are 2.0 apps using the 2.0 compilers and 2.0 CLR.

imageTry this. If you go into Visual Studio and File | New | Project (or Web Site), take note of the drop down in the upper right corner.

Select ".NET Framework 3.0" and make a new "WCF Service" take a look at the web.config. Note that it's pretty conventional, and should look like a typical .NET 2.0 ASP.NET application with a few additional.

Basically, remember Framework version != CLR Version. If you configured an IIS Application to use .NET 2.0, you're talking about the 2.0 CLR. WCF Applications use the .NET 2.0 CLR with the new 3.0 WCF libraries.

  • .NET Framework 1.x = CLR 1.x
  • .NET Framework 2.0 = CLR 2.0
  • .NET Framework 3.0 = CLR 2.0
  • .NET Framework 3.5 = CLR 2.0 + (C# 3.0 | VB9)

You can also use the new 3.5 compilers and the 3.0 libraries, of course as well. Each subsumes the previous as seen in Tim Sneath's fine stacked diagram above.

image

In your new app's web.config, there's a <system.serviceModel> section that is WCF specific, but otherwise the web.config looks pretty 2.0 typical.

.NET 3.5

The marketing term ".NET Framework 3.5" refers to a few things. First, LINQ, which is huge, and includes new language compilers for C# and VB. Second, the REST support added to Windows Communication Foundation, as well as, third, the fact that ASP.NET AJAX is included, rather than a separate download as it was before in ASP.NET 2.0.

There's a few other things in .NET 3.5, like SP1 of .NET 2.0 to fix bugs, but one way to get an idea of what's been added in .NET 3.5 is to look in c:\windows\assembly. Here's just the 3.5 versioned assemblies in the GAC (Global Assembly Cache).

image

Also, looking in %windir%\Microsoft.NET\Framework\v3.5 we can see the new compilers, MSBuild Target files, etc.

image 

So, getting to answering the original question, try this experiment.

Go into Visual Studio and make a .NET 2.0 Web Site. Once it's loaded up, note your web.config. Next, right-click on the project and select Properties. Under Build, select 3.5 Framework.

image

Now, load up your web.config and notice the changes that just occurred. There's some new handlers that are added to support Ajax and some new ASP.NET Features, but the really important stuff is the <system.codedom> and the newly added assemblies in the assemblies section.

    <compilation debug="false">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="OptionInfer" value="true"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>

There's the magic. Well, not really magic, and there's nothing hidden. This where your web site is told what version of the compiler to use, and the new supporting libraries.

This is where you tell ASP.NET to use .NET 3.5, not in IIS. IIS AppPools know about CLR versions, not Framework and compiler versions, those are set by the application.

Now, this is just my opinion, but I like to name my AppPools in IIS like this...

image

...which looks the way my brain thinks it is even though it's not reality. I keep my 1.1, 2.0 and 3.5 applications all running under the same instance of IIS, but each in their own AppPool. Note again, the there's nothing keeping me from having 3.5 apps under my 2.0 AppPool, I just keep them tidy on my own.

Technorati Tags: ,,,

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

10 Guerilla Airline Travel Tips for the Geek-Minded Person

March 31, '08 Comments [26] Posted in Musings
Sponsored By

Photo by Joshua DavisThere's a million sites with a million travel tips, so I won't even try to imply that I know what the Rick Steves of the world have worked so hard to figure out.

However, I do fly around a lot and I have for many years. I'm a geek, I like tools and I solve problems in my own niche way. It's not the way others might do it, but it seems to be working pretty well.

I just narrowly avoided a REALLY bad situation in Chicago (ORD) a few minutes ago where six flights to New York's LGA airport had cascading delays. My 3pm flight was now at 6pm which would have had me arriving into New York at 9pm! Considering I have a 9am talk, that could be disastrous. Here's how I saved my butt.

#1 Take Action at the first sign of trouble

Always have the # of the airline (or their preferred line). Nothing wastes time like digging for stuff. Use a service like tripit.com to keep all your travel details in one place. For example, today I called United from my phone the second I saw the delay appear on the board.  I also go in line at Customer Service, but I had a person on the phone well before the line moved.

#2 Know the schedule

Don't just know the schedule for your airline, or for your flight. Know and print out ALL the flights going to your destination the day you're traveling. This provides you power as you'll know what parallel flights are leaving before the other travelers, even before the flight personnel. I use http://mobile.flightstats.com/go/Mobile from my phone to stay on top of flights while on the go.

Knowing other airlines' schedule is useful because when mechanical difficulty cancels a flight you can insist that Airline #1 move you to Airline #2 if it's totally clear that there's no other way to get you to your destination on #1. Last flight I was on United had a mechanical difficulty and completely canceled my flight. The whole plane got in line to get on the next flights out, but this was the last flight of the day out of that city for that airline. I knew there was a Delta flight in an hour, so I took off for the Delta desk while calling United at the same time. I told them what flight I was on and that I wanted to be moved to Delta. I was kind, but firm, and only 1 hour late coming home. As I was boarding the Delta flight, I saw that United was passing out hotel vouchers for the folks on the first flight.

#3 Make their job easy

Speak their language and tell them what they can do to get you out of their hair. Refer to flights by number when calling reservations, it saves huge amounts of time. For example, today I called United and I said:

"Hi, I'm on delayed United 686 to LGA from Chicago. Can you get me on standby on United 680?"

Simple and sweet. I noted that UA680 was the FIRST of the 6 flights delayed and the next one to leave. I made a simple, clear request that was easy to grant. I told them where I was, what happened, and what I needed all in one breath. You want to ask questions where the easiest answer is "sure!"

#4 Never give up a guaranteed seat for a chance at a seat.

That said, always get on cascading standby. Make sure to ask them if your reservation will move from flight to flight if you don't get on standby. You'd be surprised how many reservations go missing or float around in the system. Always make sure you have your ACTUAL guaranteed ticketed seat for some flight later in the day in case the earlier standby's don't work out.

#5 Never check luggage

I did two weeks in Malaysia once with only carry on. Seriously, checking your bags not only slows you down physically but it also limits your options. When you talk to Customer Services, the FIRST thing they'll ask is "did you check bags." Your bags can't move as fast as you can.

#6 Be absolutely pleasant at every point

I can't stress this enough. Never raise your voice or demand anything. Be nice to people. Nothing you need to go (unless it's a child's health) to is important enough have a complete freak-out in public at the Airport. I've seen personally a half dozen different incidents where Airport Police have taken people away and charged them for disorderly conduct. More importantly, very rarely will you be talking to the person who screwed up your travel. They are just doing their job.

Try to be inclusive, using terms like "we," like "what can we do to fix this?" If the person seems to have a power trip, try using "you" sentences that inflate their sense of power. "Can you help me make this right?"

Today I said to an agent, "If you get me on this flight, you'll only need 2 more miracles for sainthood!" This got me an immediate smile and a pleasant transaction.

#7 Keep ahead of the wave

When disaster strikes, you have 15 minutes before the masses figure it out. Folks will queue at the drop of a hat, but savvy travelers will leap into action and start a multi-pronged approach. Call your assistant, spouse,  boss, travel agent, get on the phone, go to the departure boards. Always have at least two options. Even try going to the next gate, preferably a near-empty one with an agent behind it. Anyone at any terminal can usually fix your issue while the rest wait in a queue.

#8 Setup SMS Alerts on your airline

The best way to know what's happening before the public is via SMS Alerts. Corporate will often send gate changes before they are announced on the flight. This can save you time while trying to find the monitors upon leaving the plane. You can also setup notifications for delays. More information is better.

#9 Always wear a jacket or sport coat.

Don't look like a schlub. Have a nice pair of shoes. Shave. Well-dressed, kind, professional people get upgrades. I started wearing nice Cole Haan shoes and a sport coat when I travel and I've been consistently upgraded about 1/5th of the time. I'm convinced being fresh and clean and pleasant is the reason.

#10 Use your miles for upgrades

I don't have status on any airline, just a bunch of miles all over. Never enough for a free flight, so I never even try to use my miles for free flights . I always use them for upgrades and I offer to use them at the point where I'm talking to a customer service representative. Often, if you are pleasant beforehand, they'll just upgrade you without deducting the miles. Worst case, you get upgraded and use your miles. Best case, you're just upgraded.

Eek, they've called my boarding group, so I'm off! Bye!

Technorati Tags: ,,

Photo by Joshua Davis

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Spontaneous New York Ethiopian Nerd Dinner

March 31, '08 Comments [17] Posted in Internationalization | Musings
Sponsored By

sheba_11 I'm going to be in NYC for 3 short days (travel, talk, travel) and Dmitry Lyalin and I were thinking to do a dinner thing on Tuesday evening.

I've got an early flight out at 9am on Weds, so we'll be at Queen of Sheba NYC on Tuesday around 6:30pm. Hopefully we won't get kicked out for not having a reservation.

Every time I go to ANY town, anywhere in the world for the last 10 years, I always go to the nearest Ethiopian Restaurant. Consequently, if your town has a habesha me'gub beyt I've probably eaten there.

Ethiopian food is my grub. I could eat it all day long. I'm also into the Amharic Language, and recently Aleme from Beteseb.com read about my interest on my blog and was kind enough to send me a Fidel (The Ethiopian Alphabet is often hung as art), bringing my collection of Fidel to three. Time to find a better place to hang them. (Note, my wife is Ndebele, not Habesha, but I learned the language before I met her).

So, if you've never had Ethiopian Food, here's a good enough opportunity to come hang out and try it. (Of course, we're all going Dutch.)

RSVP in the Comments!

Related Links

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Hanselminutes Podcast 106 - Inside Outsourcing

March 31, '08 Comments [12] Posted in Podcast
Sponsored By

windia08 My one-hundred-and-sixth podcast is up. This was an unusual show as I was at Mix and saw two Regional Director buddies of mine, Vinod Unny (profile) and Venkatarangan TNC (profile) and we started chatting. Another person listening in thought the topic was interesting and said we ought to record it, so I busted out the recording gear and we did an on-the-spot recording on the effects of outsourcing from both the American and Indian perspective.

Subscribe: Subscribe to Hanselminutes Subscribe to my Podcast in iTunes

If you have trouble downloading, or your download is slow, do try the torrent with µtorrent or another BitTorrent Downloader.

Do also remember the complete archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is our sponsor for this show.

Check out their UI Suite of controls for ASP.NET. It's very hardcore stuff. One of the things I appreciate about Telerik is their commitment to completeness. For example, they have a page about their Right-to-Left support while some vendors have zero support, or don't bother testing. They also are committed to XHTML compliance and publish their roadmap. It's nice when your controls vendor is very transparent.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Hanselminutes Podcast 105 - Rocky Lhotka on Data Access Mania, LINQ and CSLA.NET

March 28, '08 Comments [7] Posted in LINQ | Podcast | Programming
Sponsored By

rocky0005-120wMy one-hundred-and-fifth podcast is up. I got a chance to sit down with Rocky Lhotka (blog) and talk about the direction data access, business objects and multi-tier development are going, as well as where he things LINQ fits into his view of CSLA.NET. CSLA.NET is Rocky's application development framework that supports his multi-tiered view of business application development.

Subscribe: Subscribe to Hanselminutes Subscribe to my Podcast in iTunes

If you have trouble downloading, or your download is slow, do try the torrent with µtorrent or another BitTorrent Downloader.

Do also remember the complete archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is our sponsor for this show.

Check out their UI Suite of controls for ASP.NET. It's very hardcore stuff. One of the things I appreciate about Telerik is their commitment to completeness. For example, they have a page about their Right-to-Left support while some vendors have zero support, or don't bother testing. They also are committed to XHTML compliance and publish their roadmap. It's nice when your controls vendor is very transparent.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.