2011-10-07 95 views
0

我的笔记本电脑上有一个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> 

我不知道,什么绑定使用什么端口,应该在我的笔记本电脑上更改什么设置?

+0

我不认为是一个好主意,如果LapTop关闭或断开连接,ASP.NET网站仍然可以正常工作?无论如何,从绑定可能这不是最好的:localhost:8732,实际上你应该显示客户端配置不是服务器。向我们展示如何从ASP.NET web.config文件引用笔记本电脑的服务 –

+0

好吧,Web应用程序仅显示有关运行Windows服务的一些信息。当wnd服务停止时,有关于网络的说明。这是我的个人网页,而不是公共门户。 – Marshall

回答

1

除非你的笔记本电脑有自己的固定IP地址暴露在外(最不可能),我认为你会很难直接做到这一点。

您可能会考虑使用Azure Service Bus来代理消息交换:我相信这是解决访问托管在非常量IP地址或防火墙/ NAT后面的服务问题的一种方法。

或者你可以考虑改变你的设计来反其道而行之。也就是说,当它连接并运行时,笔记本电脑服务通过双工绑定连接到ASP.NET盒子上托管的服务,并将当前服务合同作为回调协议。

+0

但如果我有一个静态的,外部IP是可能的?我的意思是,再一次,在一台机器上,我有一个Windows服务,WCF托管。另一方面,我有一个带有WCF客户端的ASP.NET网页。 – Marshall

+1

是的,当然,如果你确实有一个静态的外部IP,这是可能的。在配置的服务URL中使用该IP地址结束,并使用您喜欢的端口(在合理范围内)。您需要确保您的笔记本电脑的入站防火墙已打开该端口,并且您还可能需要检查主机环境是否没有任何出站防火墙规则,这些规则会阻止您离开Web服务器的请求。 –

+0

所以,如果我错了,请纠正我的错误。要从我的笔记本电脑上的Windows服务中托管的WCF服务,需要从Internet上的某个外部ASP.NET页面访问:1.我的笔记本电脑上的外部静态IP 2.配置出站和入站规则。而2)我的意思是:开始 - >运行 - > WF。msc->入站规则 - >新规则 - >端口 - > TCP + Specifi本地端口5500->允许连接 - >域名+私人+公共 - >名称MyWCF ...和出站规则与入站...相同对?最后baseAddress和客户端端点地址将是:“http://87.xxx.xxx.xxx:5500/Info/”。这就是全部? – Marshall

0

如果您的笔记本电脑上运行的WCF服务通过ServiceHost托管,则需要在ASP.NET web.config文件中复制该配置,并添加一个“service.svc”文件,该文件被引用您的服务的界面。

0

你应该改变localhost与你的笔记本电脑真正面向外部的IP地址,它可以工作,如果你家里的路由器没有防火墙。在客户端和服务器端点地址中更改它。

+0

但是防火墙不可能吗?我的意思是,没有防火墙,我的机器不安全,对吧?所以这不是一个好的解决方案,我认为.. – Marshall