4

最近、Web サイトを MVC 5 に更新しました。開発マシンで問題なく動作しました。私のMVC 4サイトがうまく機能した.Net 4.0をサポートする共有ホスティングのステージングに移動したとき。展開後、次の例外を受け取りました。

 Method not found: 'System.Web.WebPages.IDisplayMode
 System.Web.Mvc.ControllerContext.get_DisplayMode()'.

問題をトラブルシューティングするためにいくつかのことを試しましたが、何も役に立ちませんでした。

  1. DisplayMode が MVC 5 でのみ追加されたプロパティであるかどうかのドキュメントを確認しました。間違っていました。msdnドキュメントでチェックされているように、MVC 4にもありました。
  2. MSDN で奇妙なことに、 System.Web.Mvc.ControllerContext タイプを確認すると、ここで指摘されました。ここで注意すべきことは、フレームワークのバージョンを 4.0 に変更すると、ControllerContext で同じプロパティが表示されないことです。なんか変な感じでした。

私の推測では、.Net 4.5 と MVC 5.0 の組み合わせにはこのメソッドがない可能性があります。

私のアセンブリバインディング。

 <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor"
        publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>        
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
4

3 に答える 3

10

MVC 5 へのアップグレード中に同じ問題に直面しました。

これは、Microsoft.Web.Mvc.FixedDisplayModes.dllを削除することで解決されました。dll は MVC4 の古いレガシー修正であり、MVC5 を使用する場合は安全に削除できます。

ここからこのソリューションを入手しました:http://larre.fixstar.net/2014/10/sitecore-mvc-error-idisplaymode/

于 2014-11-04T15:59:10.640 に答える
0

Nuget を使用して Elmah.MVC をインストールした後、新しい MVC 5 プロジェクトで同じエラー メッセージを受け取りました。elmah のインストールにより、web.config に次のセクションが追加されたようです。

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
</assemblyBinding>
</runtime>

このセクションをコメントアウトすると、エラーはなくなり、プロジェクトは正しく実行されているように見えました。

于 2014-01-30T21:32:53.197 に答える