문제

IIS에서 호스팅 된 WCF 서비스를 통해 데스크탑 클라이언트의 커뮤니케이션을 통해 문제를 해결하는 데 도움이 필요합니다.

테스트 사례에서 내가하려는 일 :

  1. 서버는 wsdualhttpbinding 서비스를 호스팅합니다
  2. 클라이언트는 클라이언트의 IP 주소가 포함 된 콜백 URI를 제공하여 연결 (전화 등록 메소드)을 설정합니다.
  3. 연결이 설정되면 클라이언트 응용 프로그램에 의해 웹 페이지가 시작됩니다. 사용자는 텍스트 상자에 일부 텍스트를 입력하고 송신을 클릭합니다. 웹 페이지는 등록 된 모든 데스크탑 클라이언트에게 텍스트를 보냅니다.

문제:

2 단계에서 PC에는 여러 IP 주소 (이더넷 어댑터, 루프백 어댑터 등)가있을 수 있습니다. 등록 통화 중에이 목록의 IP가 서버 (예 : 루프백 어댑터 IP)에서 다시 호출 할 수없는 콜백 URL에서 전송되면 타임 아웃 예외가 발생됩니다. 그러한 시도 후, 서버는 더 이상 클라이언트의 통화를 수락 할 수 없습니다 (유효한 IP이든 다른 경우). 때로는 "서버가 너무 부드러운"예외가 발생했습니다.

(DNS/WINS 구성 문제로 인해 콜백 URI에서 기계의 자격을 갖춘 이름을 사용할 수 없습니다. 서버가 컴퓨터 이름을 올바른 IP 주소로 해결하지 못하게합니다).

재생산 방법 :
ㅏ. IIS에 서버를 게시하십시오. 여러 IP 주소가있는 다른 컴퓨터에서 클라이언트를 실행하십시오. 클라이언트는 시간 초과 예외를 던지고 3 번 시도 후 b. app.config의 매개 변수를 사용하면 올바른 IP 주소 (사용할 IP)에 입력 할 수 있습니다. 이제 프로그램이 시작되면 모든 것이 잘 작동합니다.
씨. 잘못된 IP가 사용되도록 위에 지정된이 IP 주소를 제거하면 다시 단계 A가 발생합니다. 이 모드에서 프로그램을 2-3 번 실행하십시오.
디. B 단계에서 변경하고 프로그램을 실행하십시오. 때로는 타임 아웃 예외가 발생합니다. 다른 경우에는 웹 사이트가 나타납니다. 그러나 텍스트를 입력하고 보내면 클라이언트에게 오지 않습니다. (웹 서비스가 전화를받지 못하더라도 레지스터 방법이 작동했습니다. 웹 서비스에 등록 된 클라이언트가 없으므로 전송 기능이 실패합니다.

왜 이런 일이 정확히 발생하고 어떻게 해결 해야하는지 잘 모르겠습니다. 여기 내 Visual Studio 솔루션이 있습니다. http://bit.ly/atkfos

모든 입력, 의견에 감사드립니다. 환경 : 서버 - Windows XP (IIS 5), Windows Server 2008 SP2 X64 (IIS 7), 클라이언트 : Windows XP

감사합니다 GC

도움이 되었습니까?

해결책

글쎄, 주요 문제는 다음과 같습니다. 서버가 클라이언트에게 다시 호출하려고 시도하고 실패 할 때, 둘 사이의 채널은 "결함"되어 쓸모 없게됩니다.

이러한 이벤트가 발생하면 클라이언트 측 프록시를 처리하고 재현하거나 서버의 타임 아웃 예외를 우아하게 처리해야합니다 (포착, 비누 오류로 바꾸고 로그인하십시오. 필터링되지 않은 .NET TimeoutException은 클라이언트로 다시 전달되므로 채널에 결함이 있습니다).

그러한 타임 아웃 렉스크가 발생할 때 서버 측에서 무엇을합니까? 당신은 채널까지 그 예외를 완전히 거품하지 않도록합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top