私はリフレクトを使用してアセンブリXをロードするwinformsアプリケーションを使用しています。ローカルマシンからはうまく動作しますが、ネットワーク共有から実行するとうまく動作します。 (urlプロパティを指定して)共有からアセンブリへの完全な信頼(テストのみ)を与えるコードグループを作成しました。今すぐアプリが起動します。しかし、それは爆弾私は次のエラーで依存アセンブリYにアクセスするためにXを必要とする操作を実行しよう:最小限の許可要求の付与に失敗しました。 (HRESULTからの例外:0x80131417)
Could not load file or assembly 'Bloomberg.Api, Version=1.8.0.3,
Culture=neutral, PublicKeyToken=65c07ea3148235aa' or one of its dependencies. Failed to grant minimum
permission requests. (Exception from HRESULT: 0x80131417)
私は次のコードを使用してのAppDomainにアセンブリXをロードしています:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.IO;
using System.Reflection;
using TCPSecurityMaster;
using System.Windows.Forms;
using System.Security.Policy;
using System.Security;
using System.Security.Permissions;
namespace SecurityMasterReflectionTest
{
class Program
{
static void Main(string[] args)
{
try
{
AppDomainSetup ads = new AppDomainSetup();
ads.ApplicationBase = ConfigurationManager.AppSettings["SecurityMasterBinDir"];
ads.ConfigurationFile = Assembly.GetEntryAssembly().Location + ".config";
AppDomain newAD = AppDomain.CreateDomain("SM", null, ads);
string dir = ConfigurationManager.AppSettings["SecurityMasterBinDir"];
string asmName = dir + "\\" + ConfigurationManager.AppSettings["SecurityMasterFacadeAssemblyName"];
string typeName = ConfigurationManager.AppSettings["SecurityMasterFacadeClassName"];
if (File.Exists(asmName))
{
object obj = (ISecurityMasterAPI)newAD.CreateInstanceFromAndUnwrap(asmName, typeName);
ISecurityMasterAPI api = obj as ISecurityMasterAPI;
api.Initialize();
Form f = api.GetSecurityDetailDialog(35516);
f.ShowDialog();// this works, but a subsequent operation that requires assembly Y to be loaded doesn't
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
を
ネットワーク共有の下にあるすべてのアセンブリに完全な信頼を与えることでCASの問題が解決されたと思います。どんなヒントもありがとう。
- UPDATE
私のコードグループでは、私の代わりに「完全な信頼」の「すべて」として設定する権限を指定していました。 「完全信頼」に変更すると、エラーが修正されました。しかし、私はまだ反射を使用するために CASを調整する必要があると私はまだ謎めいていますが、反射しないコードはネットワーク上でうまく動作します。 「ネットワーク上にロードされたこのアセンブリを完全に信頼します」というプログラム的な方法はありませんか? これに照らされた光は感謝しています。
新しい質問がある場合は、[質問する](http://stackoverflow.com/questions/ask)ボタンをクリックして質問してください。コンテキストを提供する場合は、この質問へのリンクを含めてください。 – deW1
私は質問がないのに私がするべきことはそれですか?質問されていない質問に対する答えが多い。 – JPlatts
@JPlattsはい、コミュニティに役立つと思われる場合は、自分の質問をして回答することができます。この質問はPowerShellのタグが付いていないため、エラーは同じでもコンテキストには関係ありません。この特定のエラーは、さまざまな場所で発生し、あるスレッドの可能な修正をすべて記述すると、(環境を指定せずにHTTP 404エラーが発生する可能性のあるすべての理由を説明するのと同じように)非常に迅速に機能しなくなります。 – Dan