我有一個WCF主機像這樣的東西:獲取自定義對象在資源管理器擴展無法正常工作,但在winform
[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);
完整的擴展無法正常工作。但只在擴展中使用它。即使我在擴展的第一行插入Messagebox,它也不會被打中。我不知道爲什麼。它似乎運行預檢查,並找到被拒絕的自定義類的電話或... 如果我使用的WinForm或這樣沒有問題。
.net 3.5
好奇的是,我有一個斷點和主機側的消息。因此,我認爲,該方法不叫
現在更新 我感動在擴展的Load方法的WCF呼叫並獲得了異常:
system.missingMethodException而:找不到方法: 「Contracts.Interfaces.MyTestClass Contracts.Interfaces.IMountToOs.MyTest()」。
我的winform測試和這個擴展使用相同的接口,以便該方法應該從兩者都知道。沒有合同或以上已經過時
您是否感到懷疑當你調用Proxy.MyTest()。一個? – user957902 2012-08-14 11:50:38
沒有,沒有例外,當然我試着用一個try catch和一個文件的異常的File.Write – 2012-08-14 11:54:57
ServiceContract IMountToOs和MyTestClass是不同的程序集?如果是這樣,我會檢查[Fusion](http://msdn.microsoft.com/en-us/library/e74a18c4(v = vs.100).aspx)日誌以查看運行擴展時MyTestClass程序集是否被加載。 – Simon 2012-08-22 00:35:32