如何在互联网上发布WCF服务(在wnd服务中托管)
我的笔记本电脑上有一个Windows服务,它托管着WCF服务。我想在我的ASP.NET网站上使用这些服务,该网站位于外部ASP.NET服务器上。如何在互联网上发布WCF服务(在wnd服务中托管)
你能帮帮我,怎么做?
是否需要特定的笔记本电脑配置?我应该配置什么?
和绑定,什么类型将足够? ..现在,我已经有了:
<service behaviorConfiguration="WcfServices.InfoBehavior" name="MyProgram.WcfServices.Info.Info">
<endpoint address="" binding="wsHttpBinding" contract="MyProgram.WcfServices.Info.IInfo">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/Info/" />
</baseAddresses>
</host>
</service>
UPDATE: 现在,我的客户端应用程序仍然在我的笔记本电脑(它没有公布尚未)。这是我的客户端代码:
<client>
<endpoint address="http://localhost:8732/Info/" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IInfo" contract="ServiceInfo.IInfo"
name="WSHttpBinding_IInfo">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
我不知道,什么绑定使用什么端口,应该在我的笔记本电脑上更改什么设置?
除非你的笔记本电脑有自己的固定IP地址暴露在外(最不可能),我认为你会很难直接做到这一点。
您可能会考虑使用Azure Service Bus来代理消息交换:我相信这是解决访问托管在非常量IP地址或防火墙/ NAT后面的服务问题的一种方法。
或者你可以考虑改变你的设计来反其道而行之。也就是说,当它连接并运行时,笔记本电脑服务通过双工绑定连接到ASP.NET盒子上托管的服务,并将当前服务合同作为回调协议。
但如果我有一个静态的,外部IP是可能的?我的意思是,再一次,在一台机器上,我有一个Windows服务,WCF托管。另一方面,我有一个带有WCF客户端的ASP.NET网页。 – Marshall
是的,当然,如果你确实有一个静态的外部IP,这是可能的。在配置的服务URL中使用该IP地址结束,并使用您喜欢的端口(在合理范围内)。您需要确保您的笔记本电脑的入站防火墙已打开该端口,并且您还可能需要检查主机环境是否没有任何出站防火墙规则,这些规则会阻止您离开Web服务器的请求。 –
所以,如果我错了,请纠正我的错误。要从我的笔记本电脑上的Windows服务中托管的WCF服务,需要从Internet上的某个外部ASP.NET页面访问:1.我的笔记本电脑上的外部静态IP 2.配置出站和入站规则。而2)我的意思是:开始 - >运行 - > WF。msc->入站规则 - >新规则 - >端口 - > TCP + Specifi本地端口5500->允许连接 - >域名+私人+公共 - >名称MyWCF ...和出站规则与入站...相同对?最后baseAddress和客户端端点地址将是:“http://87.xxx.xxx.xxx:5500/Info/”。这就是全部? – Marshall
如果您的笔记本电脑上运行的WCF服务通过ServiceHost
托管,则需要在ASP.NET web.config文件中复制该配置,并添加一个“service.svc”文件,该文件被引用您的服务的界面。
你应该改变localhost
与你的笔记本电脑真正面向外部的IP地址,它可以工作,如果你家里的路由器没有防火墙。在客户端和服务器端点地址中更改它。
但是防火墙不可能吗?我的意思是,没有防火墙,我的机器不安全,对吧?所以这不是一个好的解决方案,我认为.. – Marshall
我不认为是一个好主意,如果LapTop关闭或断开连接,ASP.NET网站仍然可以正常工作?无论如何,从绑定可能这不是最好的:localhost:8732,实际上你应该显示客户端配置不是服务器。向我们展示如何从ASP.NET web.config文件引用笔记本电脑的服务 –
好吧,Web应用程序仅显示有关运行Windows服务的一些信息。当wnd服务停止时,有关于网络的说明。这是我的个人网页,而不是公共门户。 – Marshall