我刚刚学习wcf,无法理解一个非常基本的东西。wcf端点相对地址
我创建了一个WCF服务,我想在IIS中托管,就像使用它自己的路径(如http://myhost/myapp/
和其他所有程序)的Web应用程序一样。
我创造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
让我从URL正确配置。
问题出现了。
我有一个WCF服务在IIS下工作,我想添加一个端点。例如,让它成为net.tcp
端点。在IIS默认配置为接受在端口808 net.tcp
连接,我加入net.tcp
协议,以我的web应用程序的性能,我想端点添加到我的服务这样的:
<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任何方式指定一个IIS托管WCF服务的net.tcp
(或https)端点,而不指定绝对URL呢?
我不知道我刚才做了什么,但我有一个工作net.tcp端点与空的“地址”参数。无论如何感谢您的帮助。 – pushist1y