我有一个像这样的 WCF 主机:
[ServiceContract]
public interface IMountToOs
{
[OperationContract]
char GetMountDriveLetter();
[OperationContract]
MyTestClass MyTest();
}
public class MyTestClass
{
public string A { get; set; }
public string B { get; set; }
}
客户
private IMountToOs _proxy;
public IMountToOs Proxy
{
get
{
if (_proxy == null)
{
NetTcpBinding binding = new NetTcpBinding();
binding.MaxReceivedMessageSize = 2147483647;
binding.OpenTimeout = TimeSpan.FromMilliseconds(50000);
EndpointAddress address = new EndpointAddress("net.tcp://localhost:1234/MountToOsHost");
//_proxy = new MountToOsClient(binding, address);
ChannelFactory<IMountToOs> factory = new ChannelFactory<IMountToOs>(binding);
_proxy = factory.CreateChannel(address);
}
return _proxy;
}
}
虽然我可以访问
MessageBox.Show("Okay - " + Proxy.GetMountDriveLetter());
我不能调用这个方法:
MessageBox.Show("Okay - " + Proxy.MyTest().A);
完整的扩展不起作用。但仅在扩展中使用它时。即使我在扩展的第一行插入一个消息框,它也不会被命中。我不知道为什么。它似乎进行了预检查并找到了被拒绝的自定义类的调用......如果我使用winform左右没有问题。
.net 3.5
奇怪的是,我有一个断点和一个主机端的消息。所以我看到没有调用该方法
现在更新 我在扩展的加载方法中移动了 wcf-call 并得到了一个异常:
System.MissingMethodException:找不到方法:“Contracts.Interfaces.MyTestClass Contracts.Interfaces.IMountToOs.MyTest()”。
我的 winform 测试和此扩展使用相同的接口,因此应该从两者都知道该方法。没有任何合同过时