2009-09-02 5 views
8

나는 WCF 서비스 (wsHttp 바인딩)를 사용하여 SQL Server에서 데이터를 가져 와서 Winforms로 다시 전달하는 내 서버와 통신하는 .NET 3.5 Winforms 응용 프로그램을 구축하고 있습니다. app (스마트 클라이언트). Windows 7 RTM을 실행 한 이후 WCF가 처음으로 통신 할 때 약 30 초 지연이 있음을 알았습니다.Windows 7에서 느린 웹 서비스 (및 WCF 서비스) 호출

ASMX 서비스를 사용하는 다른 응용 프로그램 (Desaware 라이센스 시스템)에도 동일한 문제가 발생하여 시작 지연으로 인해 문제가없는 것으로 나타났습니다.

이 처음 시작 프로그램은 .NET 컴파일/JIT 문제가 아니므로 즉시 응용 프로그램을 닫고 다시 할 수 있습니다. 서버가 Windows 2003/IIS 6을 실행하고 있습니다. Windows 7 이전 버전에서는 문제가 없었습니다.

같은 문제를 해결하려고했습니다. 나는이 초기 지연이있는 이유를 알 수 없다. 나는 응용 프로그램이 System.IdentityModel 라인처럼 지연을 시작하기 때문에 디버그 윈도우에서도 알 수 있습니다. Windows 7에서 보안/인증 변경이있는 것처럼 보입니다.이 지연을 일으키는 것으로 생각됩니다.

누구든지이 문제를 해결하는 방법에 대한 제안이 있습니까? VS 2008/.NET 3.5.

감사합니다.

답변

14

다음 구성 요소를 바인딩 구성에 추가 했으므로 문제가 해결 된 것으로 보입니다.

useDefaultWebProxy이

useDefaultWebProxy

이 감사 = "false"를 더글러스

+0

소원 나는 하나 이상의 upvote 줄 수있다; 이것은 나의 날을 구했다! 고마워요! –

0

30 초 지연, 30 초 후에 뭔가를 기다리고있는 것처럼 들립니다.

아마도 Windows 7 시스템과 서버 사이의 인증과 관련이 있습니다. 이벤트 로그를 확인하는 것이 좋습니다.

+0

양쪽 모두 이벤트 로그를 확인했는데 모두 양호합니다. – Neal

+0

다음으로 확인해야 할 것은 네트워크입니다. 두 컴퓨터가 같은 도메인에 있습니까? 컴퓨터간에 방화벽이 있거나 컴퓨터와 도메인 제어간에 방화벽이 있습니까? 또한 Windows XP에서 테스트 해보십시오. 코드가 변경된 경우에 대비합니다. –

-1

= "거짓" 문제. 나는 ChannelFactory에 객체를 사용하여 내 프록시를 생성하고 바인딩 서버 측에 대한 useDefaultWebProxy을 지정하는 것 외에도,이 옵션을 클라이언트 측을 지정하는 것이 필요하다고 발견

HttpTransportBindingElement httpTransport = new HttpTransportBindingElement 
{ 
    MaxBufferPoolSize = int.MaxValue, 
    MaxBufferSize = int.MaxValue, 
    MaxReceivedMessageSize = int.MaxValue, 
    AuthenticationScheme = System.Net.AuthenticationSchemes.Ntlm, 
    UseDefaultWebProxy = false 
} 

내가 문제 만 발생 발견 현재 Windows 자격 증명을 사용할 때 특정 자격 증명을 전달하면 성능이 예상대로 유지됩니다. 그러나 UseDefaultWebProxy 클라이언트 측을 설정하면 문제가 해결됩니다.

누군가가 어딘가에 도움이되기를 바랍니다.

+6

-1 : 정확히 이전 대답이 말한 것이 아닙니까? –

2

나도 같은 경험 한 내 윈도우 7에 근무하고 웹 서버에 연결