0
클라이언트가 내 응용 프로그램에서 메시지를 교환 할 수 있도록 PollingDuplexHttpBinding
을 사용합니다. 클라이언트는 나중에 사용할 수 있도록 정적 사전에 추가하는 RegisterClient()
메서드를 통해 레지스터입니다.PollingDuplexHttpBinding 및 응용 프로그램 풀 재활용
코드는 다음과 같습니다
[ServiceContract(Namespace = "...", CallbackContract = typeof(MyServiceCallback))]
public class MyService
{
public static Dictionary<string, MyServiceCallback> Clients =
new Dictionary<string, MyServiceCallback>();
[OperationContract]
public void RegisterClient(string name)
{
Clients[name] =
OperationContext.Current.GetCallbackChannel<MyServiceCallback>();
}
public static void SendMessage(string name, string message)
{
Clients[name].SendMessage(message);
}
}
[ServiceContract]
public interface MyServiceCallback
{
[OperationContract(IsOneWay = true)]
void SendMessage(string message);
}
모든 응용 프로그램 풀 재활용됩니다 경우를 제외하고 잘 작동합니다.
물론 나는 정적 인 것들이 그 점에서 이상적이지 않다는 것을 알고 있습니다.
내 클라이언트 참조를 저장하여 응용 프로그램 풀 recyle에서 생존 할 수있는 좋은 곳은 어디입니까?
난 당신이 지속하고 채널을 다시 할 필요가 그것에 대해 때문에 응용 프로그램 풀 재활용 살아남을 themn 할 수 있다고 생각하지 않습니다
어떤 InstanceContextMode를 사용하고 있습니까? –
@parapurarajkumar InstanceContextMode를 지정하지 않았으므로 기본값 인 InstanceContextMode.PerSession이 사용됩니다. –