セキュリティ上の理由から、.NET 4.0 環境のサンドボックスで実行する必要があるコード ('IntPub') から Apache ActiveMQ NMS バージョン 1.6.0 を呼び出そうとしています。サンドボックスを作成するプログラムは、私のコードを「部分的に信頼」するため、「セキュリティ透過的」になります。これは、NMS が「セキュリティ クリティカル」であるように思われるため、ConnectionFactory を作成できないことを意味しているようです (以下のエラー ログを参照)。このエラーの原因となっているコードは次のとおりです。
connecturi = new Uri("tcp://my.server.com:61616");
var connectionFactory = new ConnectionFactory(connecturi);
代わりにこれも試しましたが、同様の結果が得られました。
connecturi = new Uri("activemq:tcp://my.server.com:61616");
var connectionFactory = NMSConnectionFactory.CreateConnectionFactory(connecturi);
アセンブリのセキュリティ レベルを変更することはできません (サンドボックスがそれを防ぎます)。NMS を「セーフ クリティカル」として実行して、「セキュリティ透過」コードで呼び出すことができるようにする方法はありますか? そうするために再コンパイルする必要がありますか、それとも NMS は「セーフクリティカル」とは決して見なされない何らかの操作を行いますか?
助けや提案をいただければ幸いです...
Assembly 'IntPub, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6fa620743b8dc60a' is partially trusted, which causes the CLR to make it entirely security transparent regardless of any transparency annotations in the assembly itself. In order to access security critical code, this assembly must be fully trusted.Detail:
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
<ErrorCode>-2147220956</ErrorCode>
<ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>Unexpected exception from plug-in (Execute): Test.Client: System.MethodAccessException: Attempt by security transparent method 'Test.Client.Execute(System.IServiceProvider)' to access security critical method 'Apache.NMS.ActiveMQ.ConnectionFactory..ctor(System.Uri)' failed.