我正在尝试在Unity测试应用中自行托管WCF服务。
打开服务时没有报告错误,但我无法访问它或它的元数据(使用VS 2013提供的WcfTestClient进行测试)。
以下是我用于创建服务的代码:
_host = new ServiceHost(typeof(HomeAutomationService), new Uri("http://0.0.0.0:38001/"));
ServiceMetadataBehavior smb = _host.Description.Behaviors.Find<ServiceMetadataBehavior>() ??
new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
_host.Description.Behaviors.Add(smb);
_host.AddServiceEndpoint(typeof(IHomeAutomationService), new BasicHttpBinding(), "");
_host.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName,
MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
_host.Faulted += HostOnFaulted;
_host.Open();
我正在尝试使用以下Uri访问本地计算机上的元数据:http://localhost:38001/mex,但这只会返回HTTP400错误
答案 0 :(得分:0)
您需要向服务添加元数据交换(mex)端点:
<services>
<service name="MyService.MyService" behaviorConfiguration="metadataBehavior">
<endpoint
address="http://localhost/MyService.svc"
binding="customBinding" bindingConfiguration="jsonpBinding"
behaviorConfiguration="MyService.MyService"
contract="MyService.IMyService"/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>