2010-04-08 63 views
0

当我安装一个Web服务器上的WCF服务,我设置终点地址WCF主机地址的问题

<endpoint address="http://www.mydomin.com/clientname/happy.svc" 
       binding="basicHttpBinding" 
       name="happysvcbasic" 
       contract="happysvc.Ihappysvc"> 

</endpoint> 

但是当在浏览器上面的地址类型,我得到一个不同的主机名,这是内部服务器名称,如

要测试此服务,您需要创建一个客户端并使用它来调用该服务。为此,您可以使用svcutil.exe的工具,从语法如下命令行:

svcutil.exe的http://internalservername.domain/clientname/happy.svc?wsdl

我尝试添加主机/ baseaddress标记,但没有什么区别,有什么我错过了吗?感谢帮助。

+0

你的问题是什么? – Pyrolistical 2010-04-08 21:25:24

回答

0

当您通过IIS托管您在IIS中的服务时,地址始终是相对的。假设你想实现你的端点的东西删除HTTP://

<endpoint address="clientname" 

然后你的终点将是 http://localhost/virtualdirectory/happy.svc/clientname

这种情况的使用是当你暴露多个端点,每个端点有拥有一个唯一的地址。

SeeThis了解更多信息。

如果您正在尝试为您的服务设置不同的DNS地址,则需要更改托管网站的方式并使用host headers

+0

你是对的。我在iis/binding中设置主机头,一切都很好。谢谢 – Fred 2010-04-09 13:42:09

0

当你在IIS中托管你的WCF服务时,你不会选择地址,所以在你的<endpoint>中设置address=是完全没有用的,就像设置基地址一样。

当IIS托管,决定你的WCF服务地址的唯一的东西是:

  • IIS服务器的机器名/ IP地址,以及可能的端口号
  • 虚拟目录,并可能任何子目录在您happy.svc文件位于
  • 您的名称* .svc文件本身,包括.svc扩展

所以WCF服务地址会是这样的:

http://yourserver:80/VirtualDirectory/SubDirectory/happy.svc 

这就是全部了,你不能改变的(至少不是现在,在WCF 3.5 - 它可能在WCF .NET 4的不同)。

所以现在:你的问题是什么,真的吗?