2009-11-04 3 views
1

WCF PollingDuplexHttpBinding 채널을 사용하여 Silverlight 클라이언트에 알림을 푸시합니다. 대부분의 경우 잘 작동하지만 제대로 작동하려면 몇 가지 기본 세션 관리 기능을 얻으려고 싸우고 있습니다.PollingDuplexHttpBinding을 사용하여 세션 닫기

내가 가진 가장 큰 문제는 클라이언트가 세션을 마치고 더 이상 알림을 필요로하지 않는다는 것을 서버에 알리려고하는 것입니다. 클라이언트의 CloseAsync 호출은 채널의 클라이언트 쪽에서 해당 세션에 대한 새로운 알림에 대한 요청을 보내는 것을 중지하고 서버에 CloseSession SOAP 요청을 보냅니다. 문제는 채널의 서버 측에서 CloseSession 작업을 인식하지 못한다는 404 메시지를 되돌려 보내는 것입니다. 지금까지 내가 볼 수있는 오류는 PollingDuplexHttpBinding 채널의 내부에서 발생했으며 세션 클로저가 제대로 처리 될 수 있도록 응용 프로그램에 오류를 발생시키지 않습니다.

다른 누구도이 문제를 겪어 왔으며 그 방법을 찾았습니까?

답변

1

gripe article은 정말 멋졌고 HTTP를 통해 Duplex를 할 때 Silverlight로 인해 발생하는 관련 문제를 간접적으로 해결했습니다. Bsaically,이 문제는 ASP.Net 세션 상태가 웹 사이트에서 켜져 있고 ClientHttp 스택 대신 Silverlight의 BroserHttp 스택을 사용하는 것으로 인해 발생합니다.

http://blogs.msdn.com/b/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes-silverlight-calls-to-be-slow.aspx

간단한 수정, 당신은이 문제가 발생하는 경우 것이 호출하기 전에 ClientHttp 스택에 대한 경로를 등록하는 것입니다

보르 문제를 설명하는 (이 문서) 좋은 일을 너의 봉사. 이는 다음을 호출하여 간단하게 수행 할 수 있습니다.

WebRequest.RegisterPrefix(requestUri.AbsoluteUri, WebRequestCreator.ClientHttp); 

여기서 requestUri는 서비스의 Uri입니다. 희망이 도움이됩니다.

관련 문제