升级MVC3项目VS2012后AccessViolationException(AccessViol

2019-09-23 03:21发布

我已经开发了使用VS2010伟大的工程的MVC3网站。 我最近升级我的开发环境,以VS2012 RTM。 我现在不能没有崩溃开发网络服务器运行在调试器的网站。

WebDev.WebServer40.exe已停止工作

我看到在VS2012两个类似的堆栈跟踪的一个:

首先,一个AccessViolationException

mscorlib.dll!System.StringComparer.GetHashCode(object obj) + 0xc bytes  
mscorlib.dll!System.Collections.Hashtable.GetHash(object key) + 0x10 bytes  
mscorlib.dll!System.Collections.Hashtable.InitHash(object key, int hashsize, out uint seed, out uint incr) + 0xf bytes  
mscorlib.dll!System.Collections.Hashtable.Remove(object key) + 0x38 bytes   
System.dll!System.Collections.Specialized.NameObjectCollectionBase.BaseRemove(string name) + 0x2e bytes 
System.Web.dll!System.Web.SessionState.SessionStateItemCollection.Remove(string name) + 0x56 bytes  
System.Web.dll!System.Web.SessionState.HttpSessionStateContainer.Remove(string name) + 0xc bytes    
System.Web.dll!System.Web.HttpSessionStateWrapper.Remove(string name) + 0xf bytes   
Dive7.Site.dll!Dive7.Site.D7WebViewPage<object>.IsAdmin.get() Line 56 + 0x19 bytes  C#

其次, NullReferenceException

mscorlib.dll!System.StringComparer.GetHashCode(object obj) + 0x33 bytes 
mscorlib.dll!System.Collections.Hashtable.GetHash(object key) + 0x10 bytes  
mscorlib.dll!System.Collections.Hashtable.InitHash(object key, int hashsize, out uint seed, out uint incr) + 0xf bytes  
mscorlib.dll!System.Collections.Hashtable.Remove(object key) + 0x38 bytes   
System.dll!System.Collections.Specialized.NameObjectCollectionBase.BaseRemove(string name) + 0x2e bytes 
System.Web.dll!System.Web.SessionState.SessionStateItemCollection.Remove(string name) + 0x56 bytes  
System.Web.dll!System.Web.SessionState.HttpSessionStateContainer.Remove(string name) + 0xc bytes    
System.Web.dll!System.Web.HttpSessionStateWrapper.Remove(string name) + 0xf bytes   
Dive7.Site.dll!Dive7.Site.D7WebViewPage<object>.IsAdmin.get() Line 56 + 0x19 bytes  C#

发生的确切一个似乎是随机的。

据我所知,我所做的就是安装VS2012,重新启动,然后在VS的新版本中打开我的VS2010的解决方案,看它说,升级成功,然后按F5。

我的想法。 任何人都可以提出什么可能是怎么回事?

Answer 1:

请阅读部分从链接的“安装ASP.NET MVC 4个断裂ASP.NET MVC 3 RTM应用” http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253815 。 按照setps“所需的更新”,让我知道,如果这个错误仍然repros。



Answer 2:

正如阿南德指出,必须对当你在VS2012中打开它,因为VS2012的安装导致安装MVC4以及一个MVC3应用一些手动更改。 这些变化使并排端的操作:

Web.config

<appSettings>
    <add key="webpages:Version" value="1.0.0.0"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>

然后编辑你的MVC项目的.csproj文件。 替换这些行:

<Reference Include="System.Web.WebPages"/> 
<Reference Include="System.Web.Helpers" />

(他们可能是这样):

<Reference Include="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies\System.Web.WebPages.dll</HintPath>
</Reference>
<Reference Include="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
    <SpecificVersion>False</SpecificVersion>
</Reference>

有了这些行:

<Reference Include="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/> 
<Reference Include="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

摘自MVC4发行说明 。



文章来源: AccessViolationException after upgrading MVC3 project to VS2012