System.Web.Mvc 読み込みエラーの原因と対処
発生した問題
Sitecore(v10.3.2)の研修プロジェクトをデプロイした際、次のようなエラーが発生しました:
「
ファイルまたはアセンブリ 'System.Web.Mvc, Version=5.2.7.0' を読み込めませんでした。見つかったアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。」
原因
プロジェクトが参照しているMVCのバージョンは 5.2.4.0 でしたが、実行時には 5.2.7.0 が要求されていたため、バージョンの不一致が原因でした。
解決方法
web.config に以下のような binding Redirect 設定を追加することで、使用するバージョンを明示的に指定しました:
変更前↓
変更後↓
これにより、常に 5.2.4.0 のSystem.Web.Mvcが使用され、エラーが解消されました。
ワンポイントアドバイス
プロジェクトの参照バージョンと web.config の設定が一致しているか、常に確認することが大切です。
補足
この設定を追加することで、たとえ一部のコードやライブラリが異なるバージョン(例:5.2.7.0)を要求していたとしても、アプリケーションは常に System.Web.Mvc バージョン 5.2.4.0 を使用するようになります。
これにより、バージョンの不一致によるエラーを防ぎ、アプリケーションの安定性が保たれます。
SitecoreでUnicornにログインできない問題の解決
発生した問題
Sitecore 10.3.2 環境にUnicornを追加し、アイテムを同期しようとしたところ、Unicorn.aspx にアクセスした際に以下のエラーが表示されました:
「Access Denied
You need to sign in to Sitecore as an administrator to use the Unicorn control panel.」
ログインボタンをクリックすると、Sitecore Identity Serverのログイン画面にリダイレクトされ、ログイン自体は成功しました。しかし、Unicornのコントロールパネルに戻っても同じエラーが表示され続け、ページが読み込まれませんでした。
解決方法
これは、Unicornの同期ページ /unicorn.aspx が Sitecore Identity Serverの認証バイパス設定 に含まれていないことが原因です。
以下の手順で解決できます:
- NuGetでUnicornの最新版(例:v4.1.1)を使うことを確認します。
- 以下の内容で新しい設定ファイルを作成します(例:z.unicorn.hotfix.config):
<configuration>
<sitecore>
<pipelines>
<owin.cookieauthentication.validateidentity>
<processor type="Sitecore.Owin.Authentication.Pipelines.CookieAuthentication.ValidateIdentity.ValidateSiteNeutralPaths, Sitecore.Owin.Authentication">
<siteneutralpaths hint="list">
<path hint="unicorn">/unicorn.aspx</path>
</siteneutralpaths>
</processor>
</owin.cookieauthentication.validateidentity>
</pipelines>
</sitecore>
</configuration>
- このファイルを App_Config\Include\Unicorn フォルダに配置します。
- Sitecoreを再起動(またはIISリスタート)してから、再度 Unicorn.aspx にアクセスします
ワンポイントアドバイス
Unicornを使う際、Sitecore Identityが有効な環境では、Unicorn.aspxに明示的な許可が必要です。このような認証設定のバイパス処理は .config ファイルで簡単に対応できます。
以上となります。
※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。