2

私は VS2010 を使用して MVC3 Web サイトを開発しました。最近、開発環境を VS2012 RTM にアップグレードしました。開発 Web サーバーをクラッシュさせずに、デバッガーで Web サイトを実行することができなくなりました。

WebDev.WebServer40.exe が動作を停止しました

VS2012 で 2 つの同様のスタック トレースのいずれかが表示されます。

まず、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.

私はアイデアがありません。誰が何が起こっているのかを提案できますか?

4

2 に答える 2

2

リンクhttp://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253815から「ASP.NET MVC 4 をインストールすると ASP.NET MVC 3 RTM アプリケーションが壊れる」セクションをお読みください。setps の「必要な更新」に従って、このエラーがまだ再発するかどうかをお知らせください。

于 2012-09-27T23:00:12.020 に答える
0

Anand が指摘したように、VS2012 をインストールすると MVC4 もインストールされるため、VS2012 で開くときに 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 リリース ノートから引用。

于 2012-10-01T12:30:17.450 に答える