net.tcp 바인딩으로 구성된 WCF 서비스가 있습니다. 나는 클라이언트에 의해 서비스에 접근 할 수 있고 그것의 메소드를 호출 할 수있다. 또한 OperationContext.Current에 연결할 수 있습니다. 예를 들면 : 정적 변수에 저장할 때 OperationContext.Current에 연결할 수 없습니다.
public class CallBacker
{
public static IServiceCallback Client { get; set; }
public void Call(string message)
{
Client.Test(message);
}
}
클라이언트가 서비스의 등록 메소드를 호출
[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>();
}
}
}
, 내가 채널을 볼 수는 CallBacker.Client에 저장하지만 호출 할 때 "전화"되는 방법 CallBacker> 호출 (문자열 메시지)의 경우 클라이언트가 null이됩니다.
이상한 점은 net.tcp의 서비스 구성을 wsdualhttpbinding으로 설정하면 완벽합니다. 이 이상한 문제를 일으킬 수있는 net.tcp와 wsdualhttpbinding 사이에 다른 점이 있습니까?
서비스에서 선택할 수 있어야하는 두 개의 끝점 (tcp, httpdual)을 제공하는 경우 "서비스 구성 설정"에 대해 확실하지 않습니다. 하나는 당신이 클라이언트에서 사용하고 그들 사이를왔다 갔다합니다. 실제로 서비스를 변경하는 경우 그 차이가있을 수 있습니다? – PatFromCanada
'CallBacker' 클래스를 사용하는 호출을 보여줄 수 있습니까? 언제 불러? 또한, 어떤 버전의 WCF를 사용하고 있습니까? –