2011-12-07 86 views
1

我也在学习WCF,并且对于Web服务是新手,并且有一个非常基本的问题。请放纵我!我正在使用的书(学习WCF)中的例子创建了一个ServiceHost实例,指定了服务的基地址(新Uri(“http:// localhost:8000/HelloIndigo)),我猜这是该类的位置库实现服务,然后调用AddServiceEndpoint()完成最后一个参数,相对地址,作为“HelloIndigoService”。后者只不过是类的名称(在库中找到)实际上是执行服务合同?(这个班上有这个名字吗?)然而,这个说法被称为“地址”,这使得我非常困惑。请帮忙。当已经提供基地址时,WCF服务端点的相对地址

回答

3

如果你是自托管的,你可以有:

  • complete,explicit端点地址在您的端点中,例如,

    http://yourServer:8888/YourService/SomeMethodName 
    

    所以您的端点定义了一个完整的HTTP地址

OR:

  • 您可以在这对于所有端点的库中的服务定义基址服务,然后端点本身只定义从那里的相对地址。

所以在你的情况下,基地址是http://localhost:8000/HelloIndigo - 因此所有的服务端点将在该地址“下”。

终点定义相对地址的HelloIndigoService,所以这两个放在一起,并在最后的详细地址是:

http://localhost:8000/HelloIndigo/HelloIndigoService 

这适用于自托管只(当你有一个主机应用程序,它创建ServiceHost类并将其打开以供使用)。

当您使用IIS来承载您的服务时,则不使用基地址/不解释 - 相反,您的*.svc文件所在的虚拟目录(在IIS中)定义了您的服务端点的地址。

+0

谢谢你的回答,Marc。我想你已经部分回答了我问的问题。这听起来像你的答案是“是”。在本书的例子中,我们是自我托管的。包含该服务的类库是HelloIndigo.dll,并且它包含一个名为HelloIndigoService的单个类HelloIndigo()。所以我想,当它将完整的地址放在一起时,与上面列出的一样,它不需要深入研究类文件,因为该类只包含一个方法?追加“/ HelloIndigo”来指定方法名称是否有效? – user1013210