2017-06-16 80 views
2

我的地址暴露WCF服务:如果我尝试从该地址获取WSDLWCF端点不返回WSDL

http://localhost/service/ 

,它工作正常。

我也添加了端点到服务 - 这里是问题。我无法从该端点获取WSDL。 我已经在浏览器中尝试这样的:

http://localhost/service/en1 

但它不返回任何东西。

我不明白什么是错的?

我的服务很简单,一切都写在代码:

ServiceHost host = new ServiceHost(typeof(CalculatorService), new Uri[] { new Uri("http://localhost/service/") }); 

    ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
    smb.HttpGetEnabled = true; 
    host.Description.Behaviors.Add(smb); 

    host.AddServiceEndpoint(typeof(ICalculator), new BasicHttpBinding(), "en1"); 

    host.Open(); 
+0

您还需要设置行为的'HttpGetUrl'属性,如'smb.HttpGetUrl = new Uri(EndpointAddress);' –

+0

是否可以为多个端点设置HttpGetUrl? – FrenkyB

+1

好吧,'HttpGetUrl'用于设置元数据发布的位置,通常每个操作合约/服务一个。 –

回答

2

您还需要设置行为HttpGetUrl属性,如下所示:

smb.HttpGetUrl = new Uri(EndpointAddress); 

HttpGetUrl是用于设置元数据发布的位置,通常每个服务一个。