85

このエラーに関する多くの情報を見つけました:'エラー:ファイルまたはアセンブリを読み込めませんでした'*.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つを読み込めませんでした。アクセスが拒否されました。]... \ 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

4

21 に答える 21

53

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

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

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

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

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

于 2013-11-12T16:48:35.900 に答える
40

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

于 2014-08-07T11:03:40.800 に答える
28

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

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

Googleは、現在のユーザーに対するアクセス許可の問題である可能性があると言ったので、現在のIDを持っていることがわかりました。IIS APPPOOLサーバーの残りの部分が現在のIDを持っている誤動作しているサーバーで:NT AUTHORITY\NETWORK SERVICE

次に、CurrentIdentityをからに変更し IIS APPPOOLましたNT AUTHORITY\NETWORK SERVICE

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

于 2012-06-20T07:42:39.107 に答える
25

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

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

  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のコンパイルをアクティブにブロックしていることがわかりました。私のものはマカフィーでした。IT担当者はインストールの通知を受け取りませんでした。

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

出典:

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

于 2014-05-08T07:03:24.723 に答える
7

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

于 2017-11-16T04:34:31.363 に答える
6

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

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

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

于 2014-11-04T22:41:54.063 に答える
4

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

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

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

于 2016-02-05T10:25:37.443 に答える
4

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

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

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

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

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

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

于 2016-10-18T16:11:13.643 に答える
4

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

于 2018-09-03T11:43:54.817 に答える
3

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

于 2015-09-01T08:15:14.670 に答える
3

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

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

于 2015-11-04T18:53:00.090 に答える
2

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

于 2015-10-22T22:53:12.057 に答える
2

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

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

  <authentication mode="Windows" />
        <identity impersonate="true" password="******" userName="ccs\HJKWeb" />
于 2018-05-31T13:32:35.900 に答える
1

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

于 2015-06-04T14:16:36.053 に答える
1
 Go to run  : ctrl + R
 Type : %temp%

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

 Rebuild Project.
 done!
于 2016-07-01T14:15:01.153 に答える
1

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

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

于 2016-10-28T02:18:59.963 に答える
1

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

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

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

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

于 2017-09-07T13:05:55.940 に答える
1

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

于 2018-07-19T00:22:05.577 に答える
0

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

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

于 2015-04-24T08:59:21.230 に答える
0

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

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

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

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

于 2016-08-24T20:23:25.047 に答える
0

私の場合、読み取りアクセス権を持つユーザーをフォルダーのアクセス許可に追加する必要がありました。誤って取り外してしまいました。COMPUTER \ Users

于 2022-01-24T13:13:12.290 に答える