WCF サービスをテストしていますが、サービスがカスタム ファクトリを使用してブートストラップされているため、動作を偽造する必要があります。これは、テスト用に書いたコードです。
var channelFactory = new ChannelFactory<IDomainWriteService>(
new CustomBinding(
new BinaryMessageEncodingBindingElement(),
new HttpTransportBindingElement()),
new EndpointAddress(new Uri("local")));
var service = channelFactory.CreateChannel();
そして、新しい ServiceHost を作成するテストの初期化があります。
internal static void StartService()
{
Instance = new ServiceHost(typeof (DomainWriteService));
Instance.Open();
}
次の方法で、MsTest プロジェクトに偽のエンドポイントを構成しました。
<service name="xxx.DomainWriteService">
<endpoint binding="basicHttpBinding" bindingConfiguration=""
name="local" bindingName="http" contract="xxx.IDomainWriteService" />
<host>
<baseAddresses>
<add baseAddress="http://xxx/service" />
</baseAddresses>
</host>
</service>
しかし、テストを実行すると、次のランタイム エラーが発生します。
Class Initialization method xxx.ClassInitialize threw exception. System.ServiceModel.AddressAccessDeniedException:
System.ServiceModel.AddressAccessDeniedException:
HTTP could not register URL **http://+:80/service/**.
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.
私はWindows 8を使用しています