WCF主机地址问题

时间:2010-04-08 21:22:11

标签: wcf

当我在Web服务器上设置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

我尝试添加host / baseaddress标记,但没有区别,我错过了什么?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

当您在IIS中托管WCF服务时,您无法选择地址,因此在address=中设置<endpoint>绝对没用,就像设置基地址一样。

在IIS中托管时,唯一确定您的WCF服务地址的是:

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

因此,您的WCF服务地址将类似于:

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

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

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

答案 1 :(得分:0)

当您通过IIS托管IIS中的服务时,地址始终是相对的。假设您希望通过端点实现某些功能,请删除http://

   <endpoint address="clientname" 

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

这种情况的用途是当您公开多个端点时,因为每个端点都必须具有唯一的地址。

SeeThis了解详情。

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