2010-03-17 4 views
1

IIS에서 호스팅되는 WCF 서비스와 데스크톱 클라이언트의 통신에 직면하게 될 문제 해결에 도움이 필요합니다.
클라이언트에 멀티플 IP 주소가있는 경우 WCF 서비스 문제

  1. 서버가 들어있는 콜백의 URI를 제공하여
  2. 클라이언트이에 연결 (등록 방법) 호출 설정하는 WSDualHttpBinding 서비스를 호스팅 : 내가 내 테스트 케이스에서 할 노력하고있어

    클라이언트의 IP 주소
  3. 연결이 설정되면 클라이언트 응용 프로그램에서 웹 페이지를 시작합니다. 사용자가 텍스트 상자에 텍스트를 입력하고 보내기를 클릭합니다. 웹 페이지는 등록 된 모든 데스크톱 클라이언트에게 텍스트를 보냅니다.

문제 :

2 단계에서, PC가 여러 개의 IP 주소 (이더넷 어댑터, 루프백 어댑터 등)이있을 수 있습니다. 등록 호출 중에이 목록의 IP가 서버 (예 : 루프백 어댑터 IP)에서 콜백 할 수없는 콜백 URL로 전송되면 시간 초과 예외가 발생합니다. 몇 번 시도한 후에는 서버가 클라이언트의 호출을 더 이상 허용 할 수 없습니다 (유효한 IP인지 그렇지 않은지 여부). 때때로 "너무 바쁜 서버"예외가 발생했습니다.

(컴퓨터가 올바른 IP 주소로 컴퓨터를 확인하지 못하게하는 DNS/WINS 구성 문제로 인해 콜백 URI에서 컴퓨터의 정규화 된 이름을 사용할 수 없습니다.)

재현 방법 :
a. IIS에 서버를 게시하십시오. 여러 IP 주소를 가진 다른 컴퓨터에서 클라이언트를 실행하십시오. 클라이언트는 3 회 시도 후 시간 초과 예외 W 프로그램 종료를 _ 생시킵니다. b. App.Config의 매개 변수를 사용하면 올바른 IP 주소 (사용할 IP)를 입력 할 수 있습니다. 이제 프로그램이 시작되면 모든 것이 잘 작동합니다.
c. 위에 지정된이 IP 주소를 제거하여 잘못된 IP가 사용되면 다시 한 번 단계가 발생합니다. 이 모드에서 프로그램을 2-3 번 실행하십시오.
d. b 단계와 같이 변경하고 프로그램을 실행하십시오. 가끔 타임 아웃 예외가 발생합니다. 다른 때에는 웹 사이트가 나타납니다. 그러나 텍스트가 입력되어 전송 될 때 클라이언트에 전송되지 않습니다. (웹 서비스가 아무런 호출도받지 못했지만 등록 메소드가 작동했는데 웹 서비스에 등록 된 클라이언트가 없기 때문에 보내기 기능이 실패합니다

왜 이런 일이 일어나고 어떻게 처리해야하는지 잘 모르겠습니다. 내 비주얼 스튜디오 솔루션 - http://bit.ly/atKfOS

고 감사 어떤 입력, 의견 환경 : 서버 - 윈도우 XP (IIS 5), 윈도우 서버 2008 SP2의 64 (7.0), 클라이언트 :. 윈도우 XP

감사 GC

답변

0

글쎄, 나는 주된 문제는 서버가 클라이언트에게 콜백을 시도해 실패 할 때 두 서버 사이의 채널이 "오류"가되어 쓸모 없게된다.

그런 이벤트가 발생하면 클라이언트 측 프록시를 삭제하고 다시 생성하거나 서버에서 시간 초과 예외를 처리해야합니다 (catch, SOAP 오류로 변환, 기록 - 아무거나 - 그냥 돈 없음). 필터링되지 않은 .NET TimeoutException을 클라이언트에 다시 전달하도록하지 않으면 채널에 오류가 발생합니다.

그런 TimeoutException이 발생하면 서버 측에서 어떤 작업을 수행합니까?채널까지 그 예외를 버블 링하지 않도록해야합니까 ??

+0

감사합니다. marc_s. 나는 당신의 제안과보고를 적용 할 것입니다. 서버 쪽에서 메시지를 보내는 동안 예외가 발생하면 오류 이벤트가 발생합니다. 서비스는이 클라이언트를 등록 된 클라이언트 목록에서 제거하여 처리하고 클라이언트를 null로 설정합니다. –

+0

당신 말이 맞습니다. 마크. 클라이언트 측 프록시를 폐기하고 예상대로 작동했습니다. 나는 프로그램이 종료 될 때 프로그램이 종료 될 것이라고 잘못 생각했다. 감사합니다. –

관련 문제