如何在Internet上发布WCF服务(托管在wnd服务中)

时间:2011-10-07 15:33:37

标签: c# wcf

我的笔记本电脑上有一个Windows服务,它托管一个WCF服务。我想在我的ASP.NET网站上使用这些服务,该网站位于外部ASP.NET服务器上。

你能帮助我,怎么做?

是否需要特定的笔记本电脑配置?我该怎么配置?

和绑定,什么类型将足够? ..现在,我有:

  <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>

更新: 现在,我的客户端应用程序仍然在我的笔记本电脑上(它尚未发布)..这是我的客户端代码:

<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>

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

3 个答案:

答案 0 :(得分:1)

除非您的笔记本电脑有外部公开的固定IP地址(最不可能),否则我认为您很难直接这样做。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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