ファイルまたはアセンブリ、あるいはその依存関係の1つを読み込めませんでした。アクセスが拒否されました。問題はランダムですが、一度発生した後も継続します


81

このエラーに関する多くの情報を見つけました: 'エラー:ファイルまたはアセンブリ' * .dll 'またはその依存関係の1つを読み込めませんでした。アクセスが拒否されました。」しかし、私のシナリオに固有の答えは見つかりませんでした。私のサイトは6つの異なる本番サーバーに展開されていますが、この問題に直面しているのは1つのサーバーだけです。この問題はランダムですが、一度発生した後は、web.configファイルに小さな変更を加えてサイトが再コンパイルされ(web.configで変更した後、Webアプリケーションを再コンパイルします)、そのサーバー上のサイトが起動するまで続きます。ワーキング。昨日、問題は1か月の作業期間の後に再現されていました。この問題を本番環境で購入する余裕はありません。
問題の詳細:

'/'アプリケーションのサーバーエラー。 ____________________________________ ファイルまたはアセンブリ 'MainCore.DbImpl、Version = 0.0.0.0、Culture = neutral、PublicKeyToken = null'またはその依存関係の1つを読み込めませんでした。アクセスが拒否されました。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細とコードの発生場所については、スタックトレースを確認してください。

例外の詳細:System.IO.FileLoadException:ファイルまたはアセンブリ 'MainCore.DbImpl、Version = 0.0.0.0、Culture = neutral、PublicKeyToken = null'またはその依存関係の1つを読み込めませんでした。アクセスが拒否されました。

ソースエラー:現在のWebリクエストの実行中に、未処理の例外が生成されました。例外の発生源と場所に関する情報は、以下の例外スタックトレースを使用して識別できます。

アセンブリロードトレース:次の情報は、アセンブリ 'MainCore.DbImpl、Version = 0.0.0.0、Culture = neutral、PublicKeyToken = null'をロードできなかった理由を特定するのに役立ちます。

WRN:アセンブリバインディングログがオフになっています。アセンブリバインド失敗ログを有効にするには、レジストリ値[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)を1に設定します。注:アセンブリバインド失敗ログに関連するパフォーマンスの低下があります。この機能をオフにするには、レジストリ値[HKLM \ Software \ Microsoft \ Fusion!EnableLog]を削除します。

スタックトレース:

[FileLoadException:ファイルまたはアセンブリ 'MainCore.DbImpl、Version = 0.0.0.0、Culture = neutral、PublicKeyToken = null'またはその依存関係の1つを読み込めませんでした。アクセスが拒否されました。] ... DbImpl.Event.TTCEventController.GetEventFields(Int32 eventId)+0 WebSuite.SportChannel.ModelImpl.TTCModelController.AddEventFieldList(XmlElement eventNode、ITTCEventController ctrl、Int32 eventId、PlayerType stupidType)in ... root \ SportChannel \ ModelImpl \ Ttc \ TTCModelController.cs:171 ... ModelImpl.TTCModelController.GetLatestFourTourSchedulesXml()in ... root \ SportChannel \ ModelImpl \ Ttc \ TTCModelController.cs:283 ... WebRoot.UserControls.HeadlinesTab.Page_Load(Object sender 、EventArgs e)+491 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp、Object o、Object t、EventArgs e)+ 25System.Web.Util。
____________________________________

バージョン情報:Microsoft .NET Frameworkバージョン:2.0.50727.5446; ASP.NETバージョン:2.0.50727.5420


この問題は、新しいバージョンのdllをアップロードしたことが原因でしたか?
nunespascal 2012年

変更なし、すべてのサーバーで同じ古いdll、変更なし
khawarPK 2012年

すべてのサーバー上の同じ古いバージョンのMainCore.DbImpl.dllは、何もアップロードまたは変更しませんでした。
khawarPK 2012年

次回これが発生したときに一時ASP.Netファイルをクリーニング/削除してみてください。それらをクリーニングするためのbcozは、IISを再起動する必要がある場合があります。
Furqan Hameedi 2012年

次回このサーバーでこの問題が発生しないようにするにはどうすればよいですか?
khawarPK 2012年

回答:


51

私のシナリオでは、web.configファイルにIDノードがあることがわかりました。

<identity impersonate="true" userName="blah" password="blah">

ユーザー名とパスワードのパラメーターをノードから削除すると、機能し始めました。

別のオプションとして、指定したuserNameが、さまざまなC:\ Windows \ Microsoft.NET \ Framework {version}フォルダーにある「TemporaryASP.NETFiles」フォルダーを操作するためのアクセス権を持っていることを確認する必要がある場合があります。

これが他の誰かを助けることを願っています!


2
私にとって、ソリューションをローカルで実行するということは、web.configからIDノードを完全に削除することを意味しますが、本番サーバーにデプロイするには偽装が必要であるため、IDノードを追加する必要があります。詳細については、ここで私の答えを参照してください
bkwdesign 2014

3
使用する「さまざまなフレームワークフォルダー」を正確に見つけようとするのではなく、偽装ユーザーをIIS_IUSRSというローカルグループに追加しました。
アンドレアスヤンソン2015年

なりすましはコード(web.configなし)で実行できることを忘れないでください。私の場合、ユーザー(匿名ログオン)はChromeブラウザに保存されています。Chromeを再起動し、ウェブサイトに再度アクセスしてユーザーの資格情報を入力する必要がありました。
Volodymyr Kotylo 2017

36

同じ問題があり、パラメータ「32ビットアプリケーションを有効にする」「true」に設定することで修正されました(iisアプリケーションプールの詳細設定で)。


この答えは、ラブチョプラの解決策とともに私のために働きました。
ケース303

素晴らしい答えです!私のように、Azureに公開しようとして同じエラーが発生する場合は、Azureポータルでアプリに移動し、[アプリケーション設定]に移動して、[プラットフォーム]設定の[64ビット]オプションを選択します。
MV23 2017年

@ MV23なぜ64ビットなのか?なぜそれが役立つのですか?
nmit0 2619

26

私の解決策は次のとおりです。

の下にルートフォルダが見つかりませんでしたC:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files

グーグルはそれが現在のユーザーに対する許可の問題であるかもしれないと私に言いました、そして私は私が現在のアイデンティティを持っているのを見つけました:IIS APPPOOLサーバーの残りが現在のアイデンティティを持っている誤動作しているサーバーで:NT AUTHORITY\NETWORK SERVICE

次に、現在のIDをからに変更し IIS APPPOOLましたNT AUTHORITY\NETWORK SERVICE

ここから、Webアプリをリセットすると、一時的なASP.NETキャッシュが再構築され、問題が解決することがわかりました。


C1.Web.Wijmo.Controls.4アセンブリで同じ問題の解決策はありますか?取得Could not load file or assembly 'C1.Web.Wijmo.Controls.4, Version=4.0.20163.250, Culture=neutral, PublicKeyToken=9b75583953471eea' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Prajwal Bhat 2017

@Bhat:あなたの問題はまったく別の問題です。エラーメッセージを比較するだけです。
JensG 2017年

22

ほとんどの解決策を試したが、まだ問題を抱えている他の人に。

私の解決策は、この投稿の下部にある他の解決策とは異なりますが、試す前に、次のリストを使い果たしていることを確認してください。確かに、私はそれらすべてを試しましたが、役に立ちませんでした。

  1. 再コンパイルして最初から再デプロイします。既存のアプリを更新しないでください。SO回答

  2. IIS_IUSRSにディレクトリ「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ TemporaryASP.NETFiles」へのフルアクセスを許可します

    使用しているフレームワークのバージョンを覚えておいてください。アプリが偽装を使用している場合は、IIS_IUSRSの代わりにそのIDを使用してください

  3. ディレクトリ「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ TemporaryASP.NETFiles」のすべての内容を削除します。

    使用しているフレームワークのバージョンに注意してください

  4. アプリが使用しているAppPoolのIDをApplicatonPoolIdentityからNetworkServiceに変更します。

    IIS>アプリケーションプール>現在のアプリプールを選択>詳細設定> ID。

    SO Answer(機能しない場合はデフォルトに戻してください)

  5. IISバージョンとAppPool.NETバージョンのアプリとの互換性を確認します。初めての展開に非常に適用できます。SO回答

  6. 該当する場合は、偽装構成を確認します。SO回答

私の解決策:

特定のウイルス対策ソフトウェアがディレクトリ「TemporaryASP.NETFiles」内のDLLのコンパイルをアクティブにブロックしていることがわかりました。私のものはMcAfeeでしたが、IT担当者はインストールについて通知しませんでした。

マカフィーの専門家とマイクロソフトの両方のアドバイスに従って、ディレクトリ「TemporaryASP.NETFiles」を除外する必要があります、リアルタイムスキャンで。

出典:

アンチウイルスはその役割を果たしているだけなので、無効にしないでください。ダクトテーピングのため、ディレクトリ\ Temporary ASP.NET Files {プロジェクト名}に不足しているDLLファイルを手動でコピーしないでください。


エラーが私のローカルビンを(繰り返し)参照するだけであったとしても、一時的なASP.Netファイルをクリアすることは私のために働きました。非常に紛らわしいです。
dudeNumber4 2014

1
どうもありがとうございました...私はこの厄介なエラーとほぼ2週間戦ってきました。アンチウイルス(BitDefender Free Antivirus)を無効にすると、すべてが正常に機能します。
アレクサンドルペレス

1
6か月ごとに、私はこの同じSOの答えに私を送り返す不正な開発デプロイメントを持っています-素晴らしい記事@Yorro!。繰り返しになりますが、偽装ユーザーが一時ASP.NETファイルディレクトリにアクセスする必要があることになりましたが、IIS(基になるファイルではない)からアプリケーションを削除して再度追加するまで、エラーが発生しないようでした。アプリケーションをIISに戻します。
bkwdesign 2015

私の場合、McAfeeのログに表示されているように、McAfeeが.Netアプリケーションのdllへのアクセスをブロックしていることがわかりました。マカフィーの「アクセス保護」にアクセスして、「スパイウェア対策の最大保護」を変更する必要がありました。次に、「すべてのプログラムがTempフォルダーからファイルを実行しないようにする」という項目のブロックチェックを削除します。これは、無効にする代わりに構成できます。AccessProctectionLog.txtを調べて、メッセージがブロックまたはレポートされているかどうかを確認します。ログの場所は、[レポート]タブページにあります。
Paul Syfrett 2015

私が使用してエラーを取得するIIS Expresssをしてdevelopment environmentAppPoolsに関する同じ問題。
Kiquenet 2017

5

偽装を使用している場合は、次のフォルダーにある関連するユーザーアカウントに、書き込みおよび変更のアクセス許可を含むアクセス許可を必ず付与してください。

C:\Users\[username]\AppData\Local\Temp\Temporary ASP.NET Files

変更権限がありませんでした。そのため、デフォルトの権限を追加するだけではうまくいきませんでした。


選択した回答のより複雑な手順ではなく、これらの手順のみを実行しました。これだけで解決しました。
Veverke 2015

これは私にとってもうまくいきました。TechnetのSysinternalのProcessMonitorを使用して、ブロックされたフォルダーを見つけました。これは、前述の「TemporaryASP.NETFiles」フォルダーでした。プロセスモニターでは、「ファイルシステムアクティビティ」ボタン以外のすべてをオフにしてから、「アクセス拒否」を検索できます。
フォーディ2015

4

それでも問題が発生する場合は、次のことを試してください。

IISマネージャーを開きます->アプリケーションプール->アプリプールを選択します->詳細設定-> [プロセスモデル]で[ユーザープロファイルの読み込み]設定をTrueに設定します

ここに画像の説明を入力してください


この答えとフラグメントの解決策は私にとってはうまくいきました。
ケース303

4

私はそれを研究するのに1日のように無駄にしたと思います、そしてこれは私が出てきたものです。

フレームワークはこの場所からDLLにアクセスし、Temporary Asp.Netフォルダーに配置しようとするため、ソリューションのDebugフォルダーに偽装ユーザーを追加する必要があります。

したがって、基本的にこれらの2つの手順に従います

  1. 下のTemporaryAsp.Netフォルダーにアクセス許可を与えC:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files、ここに追加するユーザーが、偽装中に使用しているものと同じであることを確認します。

  2. ソリューションのDebugフォルダーに偽装ユーザーを追加しますYourSolutionPath .. \ bin \ Debug ..

これはうまくいくはずです


4

IIS->アプリケーションプール->詳細設定-> 32ビットアプリケーションを有効にするに移動します


あなたの美しさ!私に問題の世界を救った
Murphybro2 2018年

3

私は同じ問題を抱えていましたが、すべての依存関係DLLファイルを再構築して再デプロイすることで修正されました


3

私の場合、それは私のアンチウイルス(McAfee)のアクセス保護機能によるものでした。そのようなエラーの時点で、明らかにこのファイルへのアクセスをブロックしていました。

私はそれを無効にし、ソリューションが実行されました。一部のファイルへのアクセスに影響を与える可能性のある、実行中のユーティリティアプリケーションを確認することをお勧めします。


マカフィーの「アクセス保護」にアクセスして、「スパイウェア対策の最大保護」を変更する必要がありました。次に、「すべてのプログラムがTempフォルダーからファイルを実行しないようにする」という項目のブロックチェックを削除します。これは、無効にする代わりに構成できます。
Paul Syfrett 2015

2

IISの設定を確認してください。.NETFramework内で32ビットまたは64ビットのコンパイルでIIS7.5を使用しています。32ビットモードを使用するアプリがある場合は、アプリプールで32ビット命令を使用できるようにしてください。それ以外の場合は、DLLにセキュリティを設定したり、強い署名をしたりしても、何も機能しないようです。


2

新しいサーバーに環境をセットアップしています。私のweb.configは以下のようなIDノードを取得しました。「ファイルまたはアセンブリまたはその依存関係の1つを読み込めませんでした。アクセスが拒否されました。問題はランダムですが、一度発生すると続行します」

新しいサーバーのユーザーリストとしてccs \ HJKWebを追加しました。

  <authentication mode="Windows" />
        <identity impersonate="true" password="******" userName="ccs\HJKWeb" />

2

私にとっては、次のハックが機能しました。IIS->アプリケーションプール->詳細設定->プロセスモデル-> IDが組み込みアカウント(ApplicationPoolIdentity)からカスタムアカウント(マイドメインユーザー)に変更されました


1

私の場合、なりすましを使用していませんでした。私の解決策は、ユーザーグループ「IIS_IUSRS」のプロジェクトディレクトリへのフルアクセスを許可することでした。


1
 Go to run  : ctrl + R
 Type : %temp%

すべてのファイルとフォルダを削除します

 Rebuild Project.
 done!

1

この問題が発生し、参照されているパッケージ/アセンブリがWindowsによって暗号化されていることが判明しました。これは、私の会社がマイドキュメントフォルダを暗号化することを要求するポリシーを実装し、私のVisualStudioソリューションがたまたまそのディレクトリの下にあったために発生しました。

Windowsエクスプローラーでファイル/ディレクトリのプロパティに手動で移動し、暗号化を無効にすることができます。しかし、私の場合、ネットワークポリシーによって最終的に元に戻されるため、これは一時的な解決策でした。VSソリューションを暗号化されていない別の場所に移動することになりました。


1

私の場合、Visual Studioから適切な展開を実行せずに、あるサーバーから別のサーバーにサービスをコピーしていました。長い話。

とにかく、適切なNTFSアクセス許可などをすべてセットアップしましたが、それでもサービスのメインDLLをロードできませんでした。

対応するservice.pdbファイルの名前を別の名前に変更して修正しました。

たとえば、binフォルダーは次のとおり \bin\ service.dll service.dll.config service.pdb です。service.pdbの名前をzzservice.pdbに変更すると、service.dllが正常に読み込まれました。


それはあなたの問題を修正したかもしれませんが、それは原因を説明していません
ロールバックします

1

アクセスが拒否される代わりにDLLが見つからなかった場合は、適切なVC ++再頒布可能パッケージがインストールされていることを確認してください。


0

VSからこのエラーが発生しました。VisualStudioを管理者として実行せずにソリューションを開いたことが判明しました。Visual Studioを閉じて、管理者として再度実行してから再構築すると、これが解決しました。

それが誰かを助けることを願っています。


0

私の場合、単純な偽装を使用していて、偽装ユーザーがプロジェクトアセンブリの1つにアクセスするのに問題がありました。私の解決策:

  1. 問題のあるアセンブリを特定するには、内部例外のメッセージを探します。
  2. アセンブリファイルのセキュリティプロパティを変更します。

    a)偽装に使用しているユーザーアカウントをグループ名とユーザー名に追加します。

    b)そのユーザーアカウントにアセンブリファイルへのフルアクセスを許可します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.