来自nunit测试的C#Remoting(遗留)导致安全异常

时间:2015-03-02 13:15:04

标签: c# nunit remoting

我正在为使用远程处理的遗留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有一个看起来像这样的问题但看起来并不相同。

1 个答案:

答案 0 :(得分:1)

下面是问题,这是NUnit的错误。

https://github.com/nunit/nunit/issues/522