我们正在尝试部署一个使用WCF服务的网站 - 一切都在测试中运行 - 但是当我们通过面向外部的IP实现它(指向相同的WCF服务)时它就停止了工作。
当我们将网址粘贴到浏览器中时,会显示基本网页 - 但是当我们通过应用程序尝试时,它会给我们一个错误(见下文)
配置部分......
<client>
<endpoint address="http://123.321.123.321:8731/N3/WebsiteIntegrationService/" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IWebsiteIntegrationService" contract="AccessService.IWebsiteIntegrationService" name="WSHttpBinding_IWebsiteIntegrationService">
<identity>
<userPrincipalName value="myname@mydomain" />
<dns value="webservername"/>
</identity>
</endpoint>
</client>
错误......
在[0]处重新抛出异常:
在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)
在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&amp; msgData,Int32 type)
在System.ServiceModel.ICommunicationObject.Close(TimeSpan超时)
在System.ServiceModel.ClientBase 1.System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout)
at System.ServiceModel.ClientBase
1.Close()
在System.ServiceModel.ClientBase`1.System.IDisposable.Dispose()
和..
通信对象System.ServiceModel.Channels.ServiceChannel, 不能用于通信,因为它处于Faulted状态 System.ServiceModel.CommunicationObjectFaultedException Void HandleReturnMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage)
服务器堆栈跟踪:
在System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan 超时)
...但是同样的服务仍然通过我们的本地测试应用程序运行 - 我们甚至可以使用面向外部的IP。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
端点地址应该是安装服务的地址(即使用机器上的端口,而不是路由器nat表中定义的外部端口)。
我遇到了类似Web场的情况,其中外部调用是通过https进行的,但内部负载均衡器通过http调用服务器场中的实际机器。为此,服务(行为,端点)上的所有配置设置都使用http地址,因为这是他们被调用的方式。