【发布时间】:2012-06-06 00:40:31
【问题描述】:
我有一个带有 basicHttpBindings 的简单 wcf 服务,并希望将它托管在 IIS 上。
但是当我指定
<endpoint address="/myAddress" binding="basicHttpBinding" contract="Wcf.Contracts.IPublicService"/>
myAddress 被忽略。换句话说,我希望它像 localhost:1111/myaddress/PublicService.svc 这样创建我的服务端点,但它只是通过结合 localhost 和 PublicService.svc - localhost:1111/publicservice.svc 来创建端点。
为什么我需要? 我在项目中托管了一些其他服务,并希望在 localhost 之后使用不同的 url 创建它们中的每一个。(我不想将它们移动到不同的文件夹)。
我用谷歌搜索发现在 IIS 上托管时主机基地址被忽略,端点地址也是如此吗?
提前致谢
<service name="Wcf.Services.AdminService">
<endpoint address="/address" binding ="basicHttpBinding" contract="Wcf.Contracts.IAdminService"/>
<endpoint address="mex" binding ="mexHttpBinding" contract="IMetadataExchange"/>
</service>
<service name="Wcf.Services.PublicService">
<endpoint address="/address1" binding="basicHttpBinding" contract="Wcf.Contracts.IPublicService"/>
<endpoint address="mex" binding="basicHttpBinding" contract="IMetadataExchange"/>
</service>
【问题讨论】:
-
如果您将服务放在名为“myAddress”的文件夹中,则路径将从 /PublicService.svc -> /myAddress/PublicService.svc 更改。如果您想将它们全部存储在一个地方但不同的路径,您应该考虑添加 ServiceRoutes。
-
但是如果不能“适当地”使用端点地址,为什么我们需要端点地址呢?它们仅适用于 Windows 服务中的自托管服务吗?