Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Migrate web sites from IIS6 to IIS8

Posted on 2014-09-10
6
1,975 Views
Last Modified: 2014-10-01
I am attempting to migrate several websites from a Win 2003 X86 system running IIS6 to  Win 2012 R2 X64 system running IIS8.  At this point in time I am only concerned with running ALL websites in classic ASP mode.  I believe I have all of the correct roles/features installed in order to support classic mode.

I have migrated six sites over to the new 2012 server and I have only one working so far.  Switching between Classic 2.0 and 4.0 modes produces several different errors on various sites.  

-Error 500
-Error 403 Access forbidden
-Could not load file or assembly 'App_Browsers' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

I have experimented with "WebDeploy" using a ZIP package, but it doesn't appear to resolve any of the various errors I am receiving (Noted above).  I also tried a tool called "IMET" from the MS IIS.net website and creates the website/AppPools etc, but still produces the same set of errors (Noted above)

Has anyone had success with migrating websites between IIS6 and IIS8 (Classic mode)?  Any tips are truly appreciated.
0
Comment
Question by:dhrhelp
  • 3
  • 2
6 Comments
 
LVL 33

Expert Comment

by:Big Monty
ID: 40315872
Make sure whatever user your app pool runs under had access to your site. If you're using the default app pool then you need to set up access for NETWORK SERVICES.

You may also want to turn off friendly errors so you can get more info on what's falling. To do that, go under the ASP module in iis and look for something along the lines of "send errors to client"
0
 

Author Comment

by:dhrhelp
ID: 40316053
Thanks for the quick response.

I have changed the AppPool to use "Network Service" and edited the basic settings of the site to use "Application Pass-thru Authentication".  I have explicitly applied NTFS permissions for the "Network Service" group to the root of the IIS directory where the websites resides with modify permissions. Enabled ASP parent paths as well.

By turning off friendly errors, do you mean enabling ASP - > Debugging Properties -> Send Errors to Browser?  If so, this is set to "true".  

Below is one of the specific errors I am getting .  To note, the original IIS6 site was set to ASP4.0, however I am attempting to run the site in ASP 2.0 Classic with IIS8.  Changing to 4.0 classic produces an "500 - Internal server error"
Event code: 3008
Event message: A configuration error has occurred.
Event time: 9/10/2014 8:31:09 PM
Event time (UTC): 9/11/2014 12:31:09 AM
Event ID: a36f0d8f2f594ebe9268ef10cae0af88
Event sequence: 10
Event occurrence: 3
Event detail code: 0
 
Application information:
    Application domain: /LM/W3SVC/6/ROOT-6-130548686698784425
    Trust level: Full
    Application Virtual Path: /
    Application Path: E:\Websites\WEBSITENAME\
    Machine name: SERVER1
 
Process information:
    Process ID: 4624
    Process name: w3wp.exe
    Account name: NT AUTHORITY\NETWORK SERVICE
 
Exception information:
    Exception type: ConfigurationErrorsException
    Exception message: Could not load file or assembly 'App_Browsers' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.
 
Request information:
    Request URL: http://websitename/form.aspx 
    Request path: / form.aspx
    User host address: 10.1.1.1
    User:  
    Is authenticated: False
    Authentication Type:  
    Thread account name: NT AUTHORITY\NETWORK SERVICE
 
Thread information:
    Thread ID: 8
    Thread account name: NT AUTHORITY\NETWORK SERVICE
    Is impersonating: True
    Stack trace:    at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
   at System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()
   at System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai)
   at System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)
   at System.Web.Compilation.WebDirectoryBatchCompiler..ctor(VirtualDirectory vdir)
   at System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean ignoreErrors)
   at System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir, Boolean ignoreErrors)
   at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
   at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
   at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
   at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
0
 
LVL 27

Expert Comment

by:Dan McFadden
ID: 40322879
I seems that you need to install newer Visual Studio runtime DLLs.  What version of VS was the app built with?


Exception information:
     Exception type: ConfigurationErrorsException
     Exception message: Could not load file or assembly 'App_Browsers' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.


If you don't know, you could just install the latest VS2005, VS2008 and VS2010 runtimes.

Dan
0
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

 
LVL 33

Expert Comment

by:Big Monty
ID: 40324155
sorry for the delay, I've been sick as a dog these last few days and haven't been on the computer much...

what version of the .NET Framework do you have installed? you may need to just double click on the application pool and then change the .NET Framework to the version you have installed, or install the version you have selected.
0
 

Accepted Solution

by:
dhrhelp earned 0 total points
ID: 40347093
Apologies for my delay.  I figured this out.  Since IIS 8 uses global tags in the root web.config for these references, each website web.config were treating them as duplicates.

<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                              <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
                              <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                              <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                              <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/></sectionGroup></sectionGroup></sectionGroup></configSections>
0
 

Author Closing Comment

by:dhrhelp
ID: 40354142
Trial and error lead me to believe this was the solution since it was happening to multiple websites that had the exact same issue.
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

I have helped a lot of people on EE with their coding sources and have enjoyed near about every minute of it. Sometimes it can get a little tedious but it is always a challenge and the one thing that I always say is:  The Exchange of information …
Hello, all! I just recently started using Microsoft's IIS 7.5 within Windows 7, as I just downloaded and installed the 90 day trial of Windows 7. (Got to love Microsoft for allowing 90 days) The main reason for downloading and testing Windows 7 is t…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

765 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question