gpt4 book ai didi

wcf 端点相对地址

转载 作者:行者123 更新时间:2023-12-04 03:45:50 24 4
gpt4 key购买 nike

我只是在学习 wcf,无法理解一件非常基本的事情。

我正在创建一个 WCF 服务,我想将它托管在 IIS 中,就像 Web 应用程序一样,它有自己的路径,如 http://myhost/myapp/和所有。

我在 VS 中创建 WCF 服务项目,我有一个 *.svc文件描述它,然后我为它定义一个简单的端点,如下所示:

<endpoint address="" 
binding="basicHttpBinding"
contract="wcf_service_auth.IPshService" />

然后我像 IIS Web 应用程序一样将此服务发布到虚拟目录,假设它的名称为 psh_pub ,所以我可以通过 url http://localhost/psh_pub/pshservice.svc/ 访问该服务.它向我展示了 WCF 问候页面,并为我提供了 WSDL 的链接,它为我提供了正确的 wsdl 描述。

没关系。

下一步 - 我想添加一个 MEX 端点。我添加到配置:
<endpoint address="mex" 
binding="mexHttpBinding"
contract="IMetadataExchange"/>

没关系,可以在地址 http://localhost/psh_pub/pshservice.svc/mex 访问端点和 WcfTestClient.exe从该网址给我正确的配置。

问题来了。

我有一个在 IIS 下工作的 WCF 服务,我想再添加一个端点。例如让它成为 net.tcp端点。 IIS 默认配置为接受 net.tcp端口 808 的连接,我正在添加 net.tcp我的网络应用程序属性的协议(protocol),我想向我的服务添加一个端点,如下所示:
<endpoint address=""
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />

现在我假设我的服务应该可以通过 url net.tcp://localhost:808/psh_pub/pshservice.svc 访问.但事实并非如此。网络上的每个“操作方法”和手册都告诉我应该在配置文件中指定完整地址,如下所示:
<endpoint address="net.tcp://localhost:808/psh_pub/pshservice.svc" 
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />

如果我这样做,它会起作用。但是如果将服务托管在另一个虚拟目录中,我需要更改配置。如果我在另一台服务器上托管它,我需要更改配置。如果我将它托管在多台服务器上,我将不得不维护与我拥有的服务器一样多的配置。

所以主要的问题是:

WCF 中有什么方法可以指定 net.tcp IIS 托管的 WCF 服务的(或 https)端点,而没有为其指定绝对 url?

最佳答案

您应该能够定义 基地址 为您的net.tcp服务端点:

<service name="YourServiceName">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:808/psh_pub/" />
</baseAddresses>
</host>

然后您应该能够在实际端点中使用相对地址:
   <endpoint name="Tcp01"
address="pshservice.svc"
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />
</service>

关于wcf 端点相对地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7953057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com