2012-06-02 2 views
0

다른 외부 공급 업체와의 통합을 위해 많은 (50+) WCF 서비스 호스트 (Win2008R2/IIS 7.5에서 실행되는 C#으로 작성됨)가있는 웹 응용 프로그램을 실행합니다. 관리를 위해 각 호스트에 다른 서비스를 추가하고 싶습니다. 이 서비스는 우리가 통합 프로젝트에서 참조 할 수있는 라이브러리에서 정의한 단일 서비스 정의를 가질 정도로 충분히 포괄적 일 수 있습니다. 그러나 실제로 구성에서만 엔드 포인트를 추가하는 방법이 있습니까? 즉, .svc 파일을 추가하는 것을 피하고 web.config service-section에 일부 행만 추가하고 싶습니다.WCF 서비스의 구성 전용 배포

<service name="Contracts.AdminService"> 
    <endpoint address="AdminService" contract="Contracts.IAdminService" binding="basicHttpBinding" /> 
</service> 

이 그러나 작동하지 않습니다

은 내가 web.config이 추가했습니다. 이

<%@ ServiceHost Language="C#" Debug="true" Service="Contracts.AdminService" CodeBehind="Contracts.AdminService.cs" %> 

그러나 작동 아래처럼 간단한 .svc 파일을 추가하면 새로운 호스트를 설정할 때 실수가 이루어지는 것이 덜 수 있도록, 난 정말이 문제를 방지하고자하는 (우리는 이미 무리를 할 config 파일을 사용하여 자동 작업을 할 수 있으므로 새 서비스를 추가하는 것은 간단합니다). 이것이 가능한가? 어떤 단점이 있니?

답변

1

잠시 후 답을 찾았습니다. 해결책은 WCF 4의 file-less activation입니다. 이 날 그냥 내 web.config이를 추가 할 수 있도록이 후

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="true"> 
    <serviceActivations> 
    <add relativeAddress="AdminService.svc" service="Contracts.AdminService"/> 
    </serviceActivations> 
</serviceHostingEnvironment> 

내가 http://<hostname>/<path>/AdminService.svc로 이동하여 서비스에 액세스 할 수 있습니다.

-1

WCF 서비스는 ServiceHost에서 호스팅됩니다.

IIS/WAS에서 WCF를 호스팅하지 않을 때 ServiceHost를 수동으로 만들어야합니다. 두 IIS/WAS가 모두 대신 ServiceHost와 상호 작용하기 때문입니다.

기본적으로 IIS의 .svc 파일에서 수행하는 작업은 새로운 ServiceHost를 인스턴스화합니다.

ServiceHost는 하나의 서비스 유형 만 호스팅 할 수 있으므로 adminsitration을위한 새로운 유형의 서비스를 만들려는 경우 이러한 새로운 유형마다 서비스 호스트가 필요합니다.

질문에 대한 간단한 대답은 만들려는 새로운 서비스에 대한 web.config에 정보를 추가 할 수없고 ServiceHost를 인스턴스화하는 메커니즘이 필요하다는 것입니다.

+0

실제로 파일리스 활성화가이 작업을 수행 할 수 있다고 생각합니다. 내 게시물을 참조하십시오. 우리가 다른 것들을 논의하고 있습니까? – carlpett

+0

Nope. 나는 단지 파일이없는 활성화에 대해 몰랐다. 감사 –