2011-10-27 187 views
1

我想了解一下地址=“”在web.config文件WCF基础知识 - 端点

<services> 
    <service behaviorConfiguration="MyServiceTypeBehaviors" name="user"> 
    <endpoint address="" behaviorConfiguration="ptUserAspNetAjaxBehavior" binding="webHttpBinding" contract="IUser" /> 
    </service> 
</services> 
<services> 
    <service behaviorConfiguration="MyServiceTypeBehaviors" name="controller"> 
    <endpoint address="" behaviorConfiguration="ptUserAspNetAjaxBehavior" binding="webHttpBinding" contract="Icontroller" /> 
    </service> 
</services> 

我加入,我会通过jQuery来调用第二业务部分。我的第一个服务效果很好。正如你所看到的,端点地址是空白的。我正在添加第二个服务,并且我想知道如果我正确地做了它吗?我可以使用相同的行为配置和绑定来创建新的服务标签,但使用不同的合同吗?

这催生了关于web.config文件中地址的另一个问题。

它为什么当它=“”,为什么我要使用一个地址?

回答

3

它将与address=""工作时,

  • 你在IIS托管服务和基本IIS的虚拟目录决定您的服务网址(也就是*.svc文件存在VDIR)。因此,如果您有两个单独的服务,并且有两个单独的*.svc文件,则配置中的每个条目都可以有address=""设置。但是你不能有两个端点相同的服务且都有空地址属性

或:

  • 你的基地址在你的配置为您服务定义,因此该端点会使用该服务地址的基地址
+0

marc_s - 谢谢你的明确答案。只是为了澄清,现在我正在使用的服务是本地的,从你的回答中,这就是为什么我能够拥有端点地址=“”。当我将它移动到我的共享服务器时,它仍然可以使用地址=“”,或者我必须将其更改为http://www.domain.com/services/service.svc – webdad3

+1

@JeffV:只要您承载它在你的共享服务器的IIS内部 - 你仍然可以拥有'address =“”',因为IIS和存在'* .svc'文件的虚拟目录决定了服务地址 –