views:

22

answers:

1

I've just deployed my first MVC2 application to our Local Webserver (it's in our network so it can be fixed/changed as needed). The server was originally built with .Net 2, and our network admin installed the .Net 4, so I'm not 100% sure if everything is in the correct places.

What I'm wondering is should all the System.Web.* etc DLL's (.Net Framework Version 4) already be in the GAC on this server or should they be included explicitly(copy local=true) with my project (Bin) folder?

OR

Has something gone wrong with the installation and .Net should be repaired/reinstalled?

In the Gac on this server there are only .net 2.0 assemblies as far as I can tell.

When I start invoking AspNet membership stuff inside my project things fall over with the following errors.

Line 30 is easily rectified by including the MVC DLL in my Bin Directory. I'm just not sure how far I should go? Do I include everything?

At the bottom of the YSOD

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1

So I guess my Site is running .Net4

Configuration Error 
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: Could not load file or assembly 'System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Source Error: 


Line 29:         <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
****
Line 30:         <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
****
Line 31:         <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
Line 32:       </assemblies>
A: 

Well, what happens? Actually, you should generally be OK, but you'll need to ensure that you configure the web-server (typically IIS) to start from ASP.NET 4.x, not ASP.NET 2.x (this is one of the settings - "where" depends on the version of IIS). If in doubt, marking System.Web.Mvc.dll and Microsoft.Web.Mvc.dll to copy-local (properties against the reference) might help.

Also; there are some tweaks and twiddles you might need when changing to ASP.NET 4.x in IIS 7.x, for example:

  • changes to how handlers are configures
  • changes to request validation (xss)

etc; we got some YSOD initially until we fixed the config files...


Re the update, it sounds like .NET 4.x is installed, and IIS is correctly running ASP.NET 4.x, but MVC 2 does not seem to be installed. Grab it from MSDN or the Web Platform Installer and install on the server. Note that MVC is on a very different release cycle to core .NET.

Marc Gravell
added more info, this project has been built from the start with .Net 4. It's server config I'm struggling with
Paul Farry
@Paul - but you also state "It was originally built with .Net 2"... confused
Marc Gravell
@Marc - Sorry i meant the server itself was originally .Net2 when it was built
Paul Farry
Thanks so much, this was exactly what I needed, just the -> in the right direction :-)
Paul Farry