我需要测试旧的传统远程服务。 代码随附了客户端,这意味着我有一个对象来处理所有的通道实现。
从可执行文件连接到此客户端时 - 一切都很好并且运行良好,但是当尝试使用dll执行相同的操作时(nunit是测试框架)每当我尝试查询服务时都会抛出SecurityException。
为什么使用dll代码而不是可执行文件有区别?
这是错误消息:
键入System.Runtime.Remoting.ObjRef以及从中派生的类型 (例如System.Runtime.Remoting.ObjRef)是不允许的 在此安全级别反序列化。
不用说我无法访问服务器端代码,但它是.Net 4.5(虽然远程处理)和测试代码也是.Net 4.5,我必须提到我在同一台机器上运行代码
这是代码生成客户端通道
public class RemoteClient
{
public static RemoteClient GenerateClient()
{
SetupHttpChannelAndBuildUrl();
cm_remote obj = null;
try
{
obj = (cm_remote) Activator.GetObject(typeof (cm_remote_base), url);
obj.DoSomething();
return obj;
}
catch (Exception e)
{
...
}
}
private static SetupHttpChannelAndBuildUrl()
{
...
}
public void DoSomethig()
{
...
}
}
这是触发功能的dll和exe代码:
public RemoteClient GetRemoteClient()
{
return RemoteClient.GenerateClient();
}
从exe返回RemoteClient的实例,从dll返回null