2011-02-24 2 views
0

포장 마차.여러 사용자가, 우리는 현재이 설정을 가지고 서비스

2) 공개 웹 사이트에 별도의 기능을 제공하는 네트워크 내에서만 볼 수있는 내부 웹 서비스. 일부 데이터 및 rdlc 보고서를 렌더링하고 바이트 배열로 반환합니다.

네트워크 시스템에서 웹 서비스의 응용 프로그램 풀을 실행하려고 시도했지만 웹 사이트에서 액세스하지 못했습니다. 그러나 웹 서비스를 Local System으로 설정하면 작동합니다.

남은 유일한 문제는 더 많은 사용자가 웹 사이트에서이 웹 서비스에 액세스하려고 할 때마다 어떻게 든 웹 서비스가 중단되고 다시 실행되도록 풀 새로 고침이 필요하다는 것입니다. 웹 서비스에 대한 IIS의 설정을 확인했고 연결은 무제한으로 설정되었습니다.

도움말!

+0

는 성능이 로컬로 실행되는 WCF 서비스를 테스트 한 적이 있습니까? –

+0

서비스의 프록시 개체를 어떻게 인스턴스화합니까? 거기에 문제가 있습니다. 여기에 코드를 게시 할 수 있습니까? – Pradeep

+0

IIS는 좋은 애플리케이션 호스트가 아닙니다. 웹 서버 (다른 짐승)입니다. 심각한 일이라면, 나는 항상 NT 서비스 나 다른 것에서 나의 WCF 서비스의 자체 호스팅을 사용할 것이다. –

답변

0

제 의견에 진지하게 말씀 드렸듯이 IIS를 응용 프로그램 호스트로 사용하지 말 것을 권장합니다. 여기에는 몇 가지 단점이 있습니다 (서비스 주소를 지정하고 앱 풀을 처리하고 재활용하는 등).

대신, 저는 일반적으로 프로덕션 서비스를 자체 호스팅 방식으로 수행합니다. Windows NT 서비스 내부. 이렇게하면 훨씬 더 많은 유연성을 얻을 수 있습니다. 주소를 비롯한 모든 측면을 완벽하게 제어 할 수 있으며 원하는대로 서비스를 시작/중지 할 수 있으며 응용 프로그램 풀이 재활용되는 것은 아닙니다.

기본적으로 WCF 런타임에서 ServiceHost의 인스턴스를 만들고 호스트에 서비스 클래스를 제공하고 선택적으로 서비스에서 끝점을 노출하는 하나 또는 여러 개의 기본 주소를 지정해야합니다. 당신이 요청을 듣고 중지 할 때

ServiceHost svcHost = new ServiceHost(typeof(MyWCFService)); 

// optionally set additional properties here, if needed 

svcHost.Open(); // now, the host is open and accepting 

, 당신은 단지 svcHost.Close()를 호출하고 서비스 호스트가 사라 졌어요. 당신이 NT 서비스로이 패키지 때

은, 일반적으로는 설치와 OnStart 방법에서 서비스 호스트의 .Open()을, 당신은 NT 서비스의 OnStop 방법에 svcHost.Close()을 처리합니다.

ServiceHost이 들어있는이 앱은 NT 서비스 일 필요는 없습니다. 특히 테스트를 위해 ServiceHost를 콘솔 앱에 넣고 시작하여 WCF 서비스에 활력을 불어 넣고 테스트 해보십시오./debug/enhance, 콘솔 앱을 다시 닫으십시오. 제 생각에는 IIS, 가상 디렉터리 등을 사용하는 것보다 훨씬 쉽습니다.

참조 :

+0

당신은 기본적으로 이것을 Windows WCF 서비스가되도록 재 설계해야한다고 제안하고 있습니까? –