Wcf 端点相对地址
我只是在学习wcf,不能理解一件非常基本的事情 我正在创建一个WCF服务,我想将其托管在IIS中,就像web应用程序一样,具有自己的路径,如Wcf 端点相对地址,wcf,endpoint,Wcf,Endpoint,我只是在学习wcf,不能理解一件非常基本的事情 我正在创建一个WCF服务,我想将其托管在IIS中,就像web应用程序一样,具有自己的路径,如http://myhost/myapp/以及所有内容 我在VS中创建WCF服务项目,我有一个描述它的*.svc文件,然后我定义了一个简单的端点,如下所示: <endpoint address="" binding="basicHttpBinding" contract="wcf_service_auth.IP
http://myhost/myapp/
以及所有内容
我在VS中创建WCF服务项目,我有一个描述它的*.svc
文件,然后我定义了一个简单的端点,如下所示:
<endpoint address=""
binding="basicHttpBinding"
contract="wcf_service_auth.IPshService" />
<endpoint address="net.tcp://localhost:808/psh_pub/pshservice.svc"
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />
也没关系,端点可以在地址http://localhost/psh_pub/pshservice.svc/mex
和WcfTestClient.exe
提供了该url的正确配置
问题来了
我有一个在IIS下工作的WCF服务,我想再向它添加一个端点。例如,让它成为net.tcp
端点。IIS默认配置为在端口808接受net.tcp
连接,我正在将net.tcp
协议添加到我的web应用程序的属性中,我想向我的服务添加一个端点,如下所示:
<endpoint address=""
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />
如果我这样做了,它就会起作用。但是如果将服务托管在另一个虚拟目录中,我需要更改配置。如果我把它放在另一台服务器上,我需要更改配置。如果我在多台服务器上托管它,我将必须维护尽可能多的服务器配置
因此,主要问题是:
WCF中是否有任何方法可以指定IIS承载的WCF服务的net.tcp
(或https)端点,而无需为其指定绝对url?WCF无文件激活(.net 4.0)将允许您使用relativeAddress属性在相对虚拟路径下注册:
<system.serviceModel>
<serviceHostingEnvironment>
<serviceActivations>
<add relativeAddress="relative-virtual-path/yourservice.svc"
service="YourServiceImpl" />
</serviceActivations>
</serviceHostingEnvironment>
</system.serviceModel>
您应该能够为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>
然后,您应该能够在实际端点中使用相对地址:
<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>
无文件激活允许我删除.svc文件,但我看不出它如何有助于避免为net.tcp端点指定绝对主机地址。我错过了什么吗?@pushit1y服务激活下有一个名为relativeAddress的属性,允许您指定访问服务的相对虚拟路径。这对您不起作用吗?我不知道我刚才做了什么,但我有一个工作的net.tcp端点,带有空的“address”参数。无论如何,谢谢你的帮助。