단위 테스트 집합과 TFSBuild의 통합 빌드 내에서 빌드 된 프로젝트가있는 WCF ServiceHost의 인스턴스를 만드는 것과 관련된 문제가 있습니다. 단위 테스트에 사용되는 코드이다단위 테스트 WCF ServiceHost가 TFS 통합 빌드에서 실패 함
가 직접 코드를 통해 생성 될 수 있지만, 다음과 같은 세부 사항이 포함 된 .config 파일에 위치[TestMethod]
public void Service_Can_Be_Dynamically_Hosted()
{
ServiceHost host = new ServiceHost(typeof(DiscoveryService));
host.Open();
host.Close();
}
서비스의 구성 :
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="TappingBoard.Core.Network.DiscoveryServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="TappingBoard.Core.Network.DiscoveryServiceBehavior"
name="TappingBoard.Core.Network.Services.DiscoveryService">
<endpoint address="" binding="wsHttpBinding" contract="TappingBoard.Core.Network.Services.IDiscoveryService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8001/TappingBoard/DiscoveryService/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
을 단위 테스트는 클라이언트 시스템에서 완벽하게 작동하며 관리자 사용자와 비 관리자 사용자가 로컬에서 테스트를 실행합니다. TFS Build Server의 경우 Build를 시작하는 사용자는 TFSBuild라고하며 Domain Users의 구성원이고 TFS Build Server의 로컬 관리자입니다. 빌드 서버에서 동일한 단위 테스트를 실행
는 다음과 같은 예외 시작하십시오 TFS 서버가 IIS를 통해 일부 보고서 및 웹을 노출 포트 80을 사용하고 구축으로
System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http://+:8001/TappingBoard/DiscoveryService/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details). ---> System.Net.HttpListenerException: Access is denied
를, 내가 사용하는 포트를 변경 WCF 서비스에서 8001로. 이전에는 포트 80에서도 작동하지 않았습니다.
이 테스트를 TFS 빌드 서버에서 실행할 수있는 옵션이 있습니까? 빌드시 추가로 구성해야합니까? 가장 유용한 정보를 제공하는 측면에서
사용 된 시스템은 다음과 같습니다
- 데브 기계 : VS2010TS, 윈도우 7RTM는
- 서버 기계 : TFS2010, Windows Server 2008 R2의 RTM
시간과 지원에 미리 감사드립니다.
우수, 미구엘.
+1 나는 같은 도구를 게시하기 위해 여기에 왔습니다. 작동하는지 알려주세요. –
감사합니다,이 완벽하게 작동하지만 ... 이제 응용 프로그램에 대한 설치 프로그램을 만드는 동안 계정에 있어야합니다. 이 문제를 피하기 위해 nettcp로 전환 할 수 있습니다. 앱을 관리자로 실행하는 것도 옵션이 아닙니다. –