我有一個由net.tcp綁定配置的WCF服務。我可以通過客戶端獲得服務,並可以調用它的方法。我也可以到達OperationContext.Current。如:當我將它存儲到靜態變量時,我無法訪問OperationContext.Current
[ServiceContract(CallbackContract = typeof(IServiceCallback))]
public interface IService
{
[OperationContract(IsOneWay = true)]
void Register();
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class Service :IService
{
public void Register()
{
CallBacker.Client = OperationContext.Current.
GetCallbackChannel<IServiceCallback>();
}
}
}
public class CallBacker
{
public static IServiceCallback Client { get; set; }
public void Call(string message)
{
Client.Test(message);
}
}
當客戶端調用服務的註冊方法,我可以看到通道存儲在CallBacker.Client但是當我打電話「呼叫」方法的CallBacker> Call(字符串消息),客戶端爲空。
奇怪的是,當我將服務配置從net.tcp設置爲wsdualhttpbinding時,它的工作原理非常完美。 net.tcp和wsdualhttpbinding之間有什麼不同可以導致這個奇怪的問題?
似乎沒有任何問題如果服務公開了兩個端點(tcp,httpdual),您應該能夠選擇「設置服務配置」你從客戶那裏使用哪一個,並在它們之間來回切換。如果你真的改變了服務,那麼這可能是不同的? – PatFromCanada
你可以顯示使用'CallBacker'類的調用嗎?它什麼時候被叫?另外,您正在使用哪個版本的WCF? –