問題タブ [appdomainsetup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
log4net - log4net ConfigurationFile を新しい AppDomain に渡す
私がする必要があるのは、を手に入れることです:
値ですが、次を使用してアペンダーにアクセスしようとすると:-
私が得るのはすべてnullです。では、パスにアクセスするにはどうすればよいでしょうか。
これは私のlog4net構成セクションです:-
ありがとう
c# - 部分的に信頼された AppDomain のコードは、相対パス解決で System.Security.Permissions.FileIOPermission をスローします。
作成したフレームワークにサンドボックス レイヤーを追加しています。
主な概念は、フレームワークがプラグインのような DLL をロードすることです。
プラグインのロード時に、AppDomain を作成して実行を分離し、AppDomain の ApplicationBase を DLL のディレクトリに設定し、アクセスをフルに設定します。
問題は、プラグイン内で基本パスが正しく設定されていても、コードが相対パスを使用してファイルをロードしようとすると、.net が System.Security.Permissions.FileIOPermission 例外を発生させることです。
ただし、同じファイルは絶対パスを使用して簡単にロードできます。
さまざまなセキュリティ許可セットを試しましたが、相対パスの読み込みの問題を解決できる人はいません。
私が使用しているコードは次のとおりです。
私は最初のアプローチに進むことができることを認識していますが、フレームワークをできるだけ柔軟にしたいので、この問題の回避策を見つけることを好みます.
誰でも解決策や提案を手伝ってもらえますか?
c# - Assembly.Load + AppDomain.CreateDomain
メソッドを使用して新しいアセンブリ ( CLRHostHelper.dll
) をロードしています。Assembly.Load( byte[] )
私が呼び出しているそのアセンブリからAppDomain.CreateDomain
- メソッドは例外をスローします:
Exception thrown: 'System.IO.FileNotFoundException' in mscorlib.dll
Additional information: Could not load file or assembly 'CLRHostHelper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
私の理解では、新しい appDomain の作成は、ディスク上に .dll が物理的に存在する場合にのみ続行できます (使用AppDomainSetup domainSetup = new AppDomainSetup() { ApplicationBase = inDir };
すると、どのフォルダーから指定することができます) - RAM のみにロードすることはできません。
使用することAppDomain.CurrentDomain.AssemblyResolve += newapp_AssemblyResolve;
は可能ですが、そのイベントは現在の appDomain にのみ適用され、新しく作成されたものには適用されません。
また、新しい appDomain の AssemblyResolve をすぐにフックすることもできません。そのような方法はありません。
クラス AppDomainSetup には、AppDomainManagerAssembly と AppDomainManagerType も存在します。詳細については、 https ://blogs.msdn.microsoft.com/shawnfa/2004/11/12/the-managed-hosting-api/ を参照してください。独自の AppDomainManager を作成し、EntryAssembly をオーバーライドして独自のアセンブリを提供することもできますが、次のようになります。
ここで再びアセンブリ名を指定します。このアセンブリ名は、ディスクからロードする必要があります。
ここ - http://andrewzak.tumblr.com/ -Small .NET desktop applications. Turning on shadow copying.
同様の問題についていくつかの言及があり、使用する可能性SetAppDomainManagerType
がありますが、この操作を実行する実際の例はありません。多分あなたはどこか他の場所を見つけることができますか?
ハードディスクからの読み込みを実行せずに、RAM にあるアセンブリから appDomain を作成する方法を誰かに勧めてもらえますか (すべてが RAM に保持されます)。
c# - AppDomain のアンロード後に COM dll ファイルを削除しようとしているときに例外が発生する
AppDomain をアンロードした後、COM dll ファイルを削除しようとしたときに例外が発生しました。例外の詳細: 自動更新の適用に失敗しました System.UnauthorizedAccessException: パス 'IQVdxp32.dll' へのアクセスが拒否されました。コード:
c# - アプリドメインの証拠の目的?
実行したいコードをサンドボックス化する単純な軽量アプリの作成に関して、アプリ ドメインを調べてきました。指定されたコードを実行してアクセス許可を設定するなどを要求できるシンプルなコンソール アプリがあります。
ただし、証拠パラメーターが正確に何をするのかはわかりません。複数の情報源といくつかの本を見てきましたが、少なくともぼやけているようです。一部の場所とコード スニペットでは、null を使用してサンドボックスを作成し、他の場所では、ホストの実際の証拠をパラメーターとして使用してアプリ ドメインを作成します。
だから私の質問は:
- 証拠パラメータは正確に何をしますか?
- 必要ですか / アクセス許可セットとの違いは何ですか?
- サンドボックスのユーザー インターフェイスは証拠に影響を与えますか?
- これは、.exe に応じて変更が必要なパラメーターですか?