我的笔记本电脑上有一个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>
我不知道,什么绑定使用..什么端口,我的笔记本电脑上应该更改哪些设置?
答案 0 :(得分:1)
除非您的笔记本电脑有外部公开的固定IP地址(最不可能),否则我认为您很难直接这样做。
您可以考虑使用Azure Service Bus来代理消息交换:我认为这是解决访问托管在非常量IP地址或防火墙/ NAT后面的服务问题的一种方法。
或者您可以考虑改变您的设计以反过来转变。也就是说,当它连接并运行时,您的笔记本电脑服务通过双工绑定连接到ASP.NET框上托管的服务,并将您当前的服务合同作为回调合同。
答案 1 :(得分:0)
如果您通过ServiceHost
托管的笔记本电脑上运行了WCF服务,则需要在ASP.NET web.config文件中复制该配置,并添加“service.svc”文件,引用您服务的接口。
答案 2 :(得分:0)
您应该使用笔记本电脑的真实外部IP地址更改localhost
,如果您家中的路由器没有防火墙,它可以正常工作。在客户端和服务器端点地址中更改它。