Windows Server 2012, IIS8, ASP.NET 3.5 and issue installing behind firewall (without internet)

I’ve been starting to become familiar with Windows Server 2012 (aka Win8).   I’ve been a server “guy” for several years and when new versions come out, especially with another version of IIS.  My interest is peaked to evaluate new features.  

This blog post is about a recent issue that alters a bit how we install the .NET 3.5 framework.  A little history, when .NET 1.0 came out, it was a stand-alone runtime that would install on Windows 2000.  When Windows Server 2003, .NET 1.1 was part of the OS and you needed to install the .NET 1.0 runtime (to get have apps that supported 1.0).   When Windows 2008 came out, the .NET 2.0 framework was part of the OS and you needed to install .NET 1.1 on Server 2008 to get the functionality.  (.NET 1.0 didn’t run on Win 2008). 

Now comes along Windows Server 2012, it has .NET 4.x as part of the OS, so based on previous patterns, you’d be able to install the .NET 3.5 using the runtime, *cough* wrong.  Here is the error you’ll get.

One would wonder “How do I get .NET 3.5 (2.0) on my Windows Server 2012?” I came across this article on MSDN, you need to specify a source. (when behind a firewall)

I tried putting the .NET 3.5 runtime on a local drive, a network share, both failed.  Here is the error I got in the UI.  Note the /source parameter.

To install IIS8, I use a command line install  using Add-WindowsFeature.

Open Powershell

Paste this line

$IISFeatures = @(“Web-Static-Content”, “Web-Default-Doc”, “Web-Http-Errors”, “Web-Asp-Net”, “Web-Asp-Net45”, “Web-Net-Ext”, “Web-ISAPI-Ext”, “Web-ISAPI-Filter”, “Web-Http-Logging”, “Web-Log-Libraries”, “Web-Request-Monitor”, “Web-Http-Tracing”, “Web-Windows-Auth”, “Web-Filtering”, “Web-IP-Security”, “Web-Stat-Compression”, “Web-Dyn-Compression”, “Web-Mgmt-Console”, “Web-Scripting-Tools”, “Web-Metabase”, “Web-WMI”, “Web-Lgcy-Scripting”,”NET-Framework-Core”)

Run this command

Add-WindowsFeature -Name $IISfeatures -logPath “$Env:ComputerName.log” –Source \ServerSharesources

Let me point out the highlighted text in the MSDN article.  You’ll need to mount the Windows Server 2012 and extract the source files (anyone remember extracting the i386 folder for windows 2003/2000, time to put back on the network again )

Assuming you mounted the ISO to the E: drive on your computer.

xcopy e:sourcessxs*.* c:dotnet35 /s


xcopy e:sourcessxs*.* \ServerSharesources /s

After this little adventure, which took a couple hours to figure out, life was good and I could proceed with my Windows Server 2012 testing.  I had ASP.NET 2.0/3.5/4.x on my test server.  I’ve tested on the full GUI Server 2012 and Minimal Install GUI Server Core.   I haven’t went full out for server core without a GUI. 

Happy Testing

Steve Schofield

App Warm-up Module released for Windows Server 2008 R2

I’ve been a little busy and catching up on Windows 8/IIS8.  Here is some good news from the IIS/ASP.NET team.  A couple useful module released for IIS 7.5.  For those running SharePoint farms and the app pool warm-up takes ‘forever’.  Here is a way to help.   This is definitely great news for IIS web server administrators.  Thanks Shawn and MS for releasing this much needed module.  Enjoy!!

“We are pleased to announce that Release Candidate builds for the following IIS extensions are now available for download:

· Application Initialization for IIS 7.5 (replacement for the previous “Application Warmup” beta extension)

· Dynamic IP Restrictions for IIS 7/7.5

See below for details and download links.

Application Initialization for IIS 7.5 (Release Candidate)

Application Initialization 1.0 for IIS 7.5 enables website administrators to configure IIS to proactively perform initialization tasks for one or more web applications. While an application is being initialized, IIS can also be configured to return an alternate response such as static content as a placeholder or “splash page” until an application has completed its initialization tasks. The module includes the following features:

· Introduces the concept of a “warmup period” to the server.

· Enables developers to control the behavior of their applications during the warmup period.

· Enables server administrators to “pre-load” important applications by initializing them as soon as the worker process starts.

· Allows seamless recycling of pre-loaded application pools with no user-perceptible impact.

x64 download:

x86 download:

Support forum:


IIS 8.0 Application Initialization (this was written for IIS 8, but this extension provides the same functionality for IIS 7.5)

Dynamic IP Restrictions for IIS 7/7.5 (Release Candidate)

The Dynamic IP Restrictions Extension for IIS provides IT Professionals and Hosters a configurable module that helps mitigate or block Denial of Service Attacks or cracking of passwords through brute-force by temporarily blocking Internet Protocol (IP) addresses of HTTP clients who follow a pattern that could be conducive to one of such attacks. This module can be configured such that the analysis and blocking could be done at the Web Server or the Web Site level. The module includes the following features:

· Seamless integration into IIS 7.0 Manager.

· Dynamically blocking of requests from IP address based on either of the following criteria:

o The number of concurrent requests.

o The number of requests over a period of time.

· Blocking of requests can be configured at either site or server level.

· Configurable deny actions allows IT Administrators to specify what response would be returned to the client. The module support return status codes 401, 403, 404 or blocking the requests entirely.

· Support for IPv6 addresses.

· Support for web servers behind a proxy or firewall.

x64 download:

x86 download:

Support forum:


Using Dynamic IP Restrictions”