我正在为使用远程处理的遗留API编写系统范围的测试。如果我从示例中调用它,则Remoting正在运行:console application。
但是遵循NUnit项目的代码:
((FooBar)System.Activator.GetObject(typeof (FooBar), "http://localhost/FooBar.rem")).SomeMethod("abc");
异常失败:
System.Security.SecurityException : Type System.Runtime.Remoting.ObjRef and the types derived from it (such as System.Runtime.Remoting.ObjRef) are not permitted to be deserialized at this security level.
此异常的许多指针显示服务器端安全设置的更改,但是因为服务器与其他使用者一起工作,所以安全问题似乎在客户端。
我试过添加:
var clientProvider = new BinaryClientFormatterSinkProvider();
IDictionary props = new Hashtable();
const int httpConnectionLimit = 100;
const int httpTimeout = 30*1000;
props["clientConnectionLimit"] = httpConnectionLimit;
props["timeout"] = httpTimeout;
var channel = new HttpChannel(props, clientProvider, null);
ChannelServices.RegisterChannel(channel, false);
没效果。
Runner是Resharper 9.也试过MS跑步者,但似乎失败并出现同样的错误。
可悲的是,在重构旧系统以使用休息等现代技术进行沟通时,这不是一种选择。
使用Nunit 2.6.3和2.6.4进行测试。 2.6.2有一个看起来像这样的问题但看起来并不相同。