关于 WCF 服务 url 和 Mex Endpoint 的使用



我正在学习WCF,因此我经常想到问题。我开发了一个小的计算器WCF服务。我有三个项目有服务合同,另一个项目拥有与主班级的WCF服务,从我自我主持该服务。在app.config文件中,我给了我的端点地址 net.tcp://localhost:5555/calculator 我一直认为我必须在服务URL结束时给我的服务类名称。在我的应用中,我的服务URL看起来像上面,计算器是我的服务类名称。

几天前,我正在浏览WCF代码,我看到那里的服务类名称为 CHATSRV ,但是服务URL看起来像 net.tcp://localhost:55555/chat

i like to know that can i give any name to my service at the end?

1)如果是这样,则自我主机代码如何了解需要在哪种URL服务开始?

2)如果我为 <serviceMetadata httpGetEnabled="false"/>设置false,那么其他客户端如何消耗我的服务,因为我已经设置了httpGetEnabled="false"并自托管服务,但是从其他.NET项目中,我可以通过频道工厂和添加参考来消费该服务?所以告诉我人们需要设置哪些 httpGetEnabled="true"如果false正常工作?

无论我知道,如果httpGetEnabled="false",那么MEX Endpoint不会暴露于其他客户端,因此,没有其他客户可能无法添加对我的服务参考项目的参考。我是新手,所以内部服务不好。如果可能的话,请详细讨论。

3)当客户端可以实例化时,为什么需要MEX端点。通过无MEX端点来调用服务功能,然后为什么&amp;何时需要MEX端点?

谢谢

更新

1)我想知道我可以将任何URL作为端点地址吗?我已经将此 net.tcp://localhost:5555/chat 作为我的端点地址,它有效,但是如果我给出端点地址,例如 net.tcp://localhost:55555/Mychat 它是否有效?

我喜欢知道提供端点地址URL的约定是什么?

2)现在就MEX端点。在我的服务配置文件中,我会禁用MEX,但仍然看到任何客户端可以添加参考,例如 net.tcp://localhost:5555/chat/mex/mex 如何可能?

当Mex禁用时,Mex点不应在客户端之前公开或访问...我对吗?

请指导我。谢谢

我会尝试回答您的一些问题:

1)当您配置服务时,必须使用流行的配置文件或这样的代码配置端点URL:

 Dim URL as string = "http://ServerName:port/SomeClass/SomeFunction"
 Dim ServiceHost As New ServiceHost(GetType(YourImplementationClass), URL) 
 Dim ServiceHostEndPoint As EndpointAddress = New EndpointAddressURL(URL) 
 ServiceHost.AddServiceEndpoint(GetType(iYourImplementationClass), binding, ServiceHostEndPoint.ToString)
 ServiceHost.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpsBinding(), "mex")
 ServiceHost.Open()

2)您可以直接为客户提供URL和XSL,但是用MEX曝光的端点对每个人来说都很容易。另外,如果您进行更改,它们可以重新引用您的MEX元数据并自动更新其界面。

3)不需要MEX,如果客户使用Channel Factory配置端点本身,则使用MEX更容易。仅将端点URL键入浏览器将生成他们连接到您的Web服务所需的大部分内容。

希望有帮助。

在下面的行中注释,因为在配置文件中配置代理时,它将自动添加,其中定义了服务的端点。

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

如果要检查,请右键单击添加服务代理的服务代理,然后选择"配置服务参考",并且您会注意到/MEX在服务的URL中添加到last

相关内容

  • 没有找到相关文章

最新更新