我有WCF服务的以下配置文件。配置中定义了主机。但是,当我从客户端打印服务地址时,它不知道主机。打印结果是:
为什么不考虑主机名?我们需要做些什么修改?
注意:我正在从VS 2010运行以运行服务和客户端网站。
Service1Client myClientService = new Service1Client();
Response.Write(myClientService.Endpoint.Address);
客户端配置(由Visual Studio自动生成)
<client>
<endpoint address="http://localhost:3187/Service1.svc/MyFolder"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1"
contract="MyWCFReference.IService1" name="WSHttpBinding_IService1">
<identity>
<userPrincipalName value="U16990@ustr.com" />
</identity>
</endpoint>
</client>
服务器端配置为:
<services>
<!--MyService-->
<service name="MyWCFServiceApplication.MyService"
behaviorConfiguration="WeatherServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:80/ServiceModelSamples/FreeServiceWorld"/>
</baseAddresses>
</host>
<endpoint address="MyFolder"
binding="wsHttpBinding"
contract="MyWCFServiceApplication.IService1" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WeatherServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
答案 0 :(得分:2)
当通过IIS或ASP.NET开发服务器(又名 Cassini )在ASP.NET进程中托管WCF服务时,服务配置文件中的baseAddresses setting < strong>被忽略,因为服务总是可以通过SVC文件的URL 来访问。
您在客户端看到的网址是正确的:
如您所见,服务的基地址成为Web服务器上的SVC文件的URL 。
答案 1 :(得分:1)
您所说的是WCF客户端 - 但是,您发布的配置仅包含服务(服务器端)的配置...(<services>
部分)。< / p>
我在您发布的内容中看不到任何客户端配置 - 您的配置中应该有<client>
部分