2010-04-28 8 views
2

두 개의 WCF 끝점을 호스팅하는 관리되는 Windows 서비스가 있습니다. 이 서비스는 PC가 다시 시작될 때 자동으로 시작되도록 설정됩니다. - 실행 20초 서비스의 ONSTART() 메소드에Windows 서비스에서 호스팅되는 WCF 끝점과 관련된 문제

ServiceHost wcfHost1 = new ServiceHost(typeof(WCFHost1)); 

(15) 사이에 어딘가에 취 재부팅에 나는 코드 줄은 것을 찾을 수 있습니다. 사실 두 가지 진술이 있지만 두 번째 진술은 한 번에 실행됩니다. 오래 걸리는 것은 처음입니다. 누구든지 병목을 일으킬 수있는 것이 무엇인지 알고 있습니까? 이 때문에 때로는 호출이 30 초를 초과하기 때문에 SCM은 자체 초기화를 시도하는 동안 내 서비스 시간이 초과되었다고 생각합니다. 이제, 나는 이것을하기 위해 쓰레드를 돌리기 만하고 OnStart()에서 곧바로 돌아 오는 것이 쉽다는 것을 안다. 그러나 나는이 지연을 일으킬 수있는 것이 무엇인지 알고 싶다.

이 경우는 에만 발생하며 PC 재부팅시 서비스가 시작됩니다. PC가 가동 중일 때 서비스 시작 시간은 1 초 안에 &입니다.

+0

ServiceHost.Open()에 대한 첫 번째 호출은 전체 WCF 런타임을 모두 설정합니다. 즉, 두 번째 또는 두 번째 시간이 걸립니다. –

+0

테스트 할 Windows 버전은 무엇입니까? –

답변

0

This이 도움이 될 수 있습니다. 기본적으로, 나는 당신이 가지고있는 의존성을 파악하여 서비스에 추가해야한다고 생각하기 때문에, 그들은 당신의 전에 시작합니다.

이것은 어두운 곳에서의 촬영에 불과하지만 .net 프레임 워크가 아직로드되지 않았을 수 있습니다. 아마도 자동 시작을 지연 자동 시작으로 설정하여 .net 프레임 워크 및 기타 Windows 서비스 시작 시간을 허용 할 수 있습니다.

또한 .net 응용 프로그램이 시작되면 Just-In-Time 컴파일러로 컴파일됩니다. 이것은 .net이 컴파일되기를 기다리고있을 수 있습니다.

마지막으로 사용중인 WCF 인스턴스의 유형에 따라 생성자가 초기화하는 데 문제가있을 수 있습니다.

희망이 도움이됩니다.

+0

@ daub815 : 지연 시작은 XP에서는 사용할 수 없으며 XP와 Vista 모두에서 작동하려면이 기능이 필요합니다. 그리고 서비스 구현의 책임은 거의 없다는 것을 알고 있습니다. – Dilip

+0

@ daub815 : 죄송합니다. 처음으로 귀하의 링크를 보지 못했습니다. 내 모든 것이 그렇게 복잡하지는 않습니다. 내 OP에서의 간단한 ServiceHost 인스턴스화 라인은 병목 현상이있는 곳입니다. – Dilip

+0

그 단순한 선은 더 많은 것을 커버하고 시작시에만 발생한다면, 당신 앞에 시작해야 할 또 다른 서비스가 있습니다. – kevindaub

0

시작하는 데 오랜 시간이 걸리는 Windows 서비스에 문제가있었습니다. 나는 그것이 내가 사용했던 서명 된 어셈블리 (Enterprise Library) 때문이라고 알았다. .NET은 어셈블리가로드 될 때 Authenticode 서명을 확인하려고 시도했습니다 (어쩌면 작성자가 해당 어셈블리를로드하는 유형을 처음으로 사용하고 있습니다). app.config에 다음을 추가하십시오. 작동하지 않으면 다른 문제가 있습니다.

<configuration> 
    <runtime> 
     <generatePublisherEvidence enabled="false"/> 
    </runtime> 
</configuration> 

당신은 또한 여기에 몇 가지 추가 정보를 찾을 수 있습니다 http://support.microsoft.com/kb/936707Why is my .Net app contacting Verisign?

0

은 WCF 서비스에 문제가 없습니다. 문제를 해결하는 가장 좋은 방법은 클라이언트가 다른 것보다 먼저 호출해야하는 더미 연산을 만드는 것입니다. 이렇게하면 실제 거래 전에 고객이 귀하의 서비스에서 악수를하도록 강요합니다. 나는 실제로 모든 서비스를 호출 한 다음 아직 살아 있는지 확인하기 위해 더미 작업을 사용했습니다.

+0

미안하지만, 문제는 'ServiceHost' 오픈에서 발생합니다. –

관련 문제