ここで解決策を見つけることができます: http: //rekiwi.blogspot.com/2008/12/unable-to-determine-identity-of-domain.html
COMコンポーネントで、適切な証拠を使用して新しいAppDomainを作成し、その中のコードを実行します。
これが私にとっての問題を修正したコード例です:
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory.ToString();
//Then we need our evidence
System.Security.Policy.Evidence evidence = new System.Security.Policy.Evidence();
evidence.AddHost(new System.Security.Policy.Zone(System.Security.SecurityZone.MyComputer));
//Now we can fire up an AppDomain running with that evidence.
AppDomain domain = AppDomain.CreateDomain("YourDll.YourClass", evidence, setup);
YourDll.YourClass yourclass = (YourDll.YourClass)domain.CreateInstanceAndUnwrap(typeof(YourDll.YourClass).Assembly.FullName, typeof(YourDll.YourClass).FullName);
yourclass.CallYourMethod();
AppDomain間でマーシャルするタイプは、[Serializable()]とマークする必要があり、MarshalByRefObjectから継承する必要があります。例:
namespace YourDll
{
[Serializable()]
public class YourClass: MarshalByRefObject
{
...