当我在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标记,但没有区别,我错过了什么?谢谢你的帮助。
答案 0 :(得分:0)
当您在IIS中托管WCF服务时,您无法选择地址,因此在address=
中设置<endpoint>
绝对没用,就像设置基地址一样。
在IIS中托管时,唯一确定您的WCF服务地址的是:
happy.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
这种情况的用途是当您公开多个端点时,因为每个端点都必须具有唯一的地址。
如果您尝试为服务设置不同的DNS地址,则需要更改托管网站的方式并使用host headers。