C# 不能';无法从远程计算机获取元数据,但本地可以
下面是我的App.config:C# 不能';无法从远程计算机获取元数据,但本地可以,c#,.net,wcf,networking,tcp,C#,.net,Wcf,Networking,Tcp,下面是我的App.config: <?xml version="1.0"?> <configuration> <runtime> </runtime> <system.serviceModel> <diagnostics performanceCounters="Default" /> <bindings /> <serviceHostingEnvironment as
<?xml version="1.0"?>
<configuration>
<runtime>
</runtime>
<system.serviceModel>
<diagnostics performanceCounters="Default" />
<bindings />
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<behaviors>
<endpointBehaviors>
<behavior name="CrossDomainServiceBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="AService.AServBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyService.MyServiceBehavior" name="MyService.MyServ">
<endpoint address="MyService" behaviorConfiguration="" binding="netTcpBinding" contract="AService.IAServ" isSystemEndpoint="false" />
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
\u bindAddress
是来自自定义服务配置XML文件的字符串。我正在尝试将服务绑定到IP地址为172.19.0.102:8733的内部网络接口。然后我尝试使用WcfTestClient从服务的机器上的地址127.0.0.1:8733
获取服务元数据,一切正常。但当我试图通过Internet在目标远程计算机上获取服务的元数据时,我得到了代码为10051的TCP错误。
我的目标是让服务正常工作,并在互联网上为任何客户发布元数据。防火墙和其他网络设备没有问题。似乎我需要一些配置编辑来允许与每个人共享服务元数据。
提前谢谢
后期编辑:
以下是我的尝试:
1) 配置为在172.19.0.102:8733绑定的服务。
A.WCF测试客户端尝试从地址net获取托管计算机上的元数据。tcp://127.0.0.1:8733/
失败,TCP错误代码为10061
。
在同一台机器上,WCF客户端尝试从net获取元数据。tcp://172.19.0.102:8733
而且它工作正常。
C.WCF测试客户端尝试从地址net获取LAN中另一台机器上的元数据。tcp://192.168.1.2:8733/
(服务的机器IP地址)给出了一个错误TCP错误代码10061
,该错误意味着:网络无法访问,这很可能是实际发生的情况。您的IP地址属于专用网络范围,这些地址永远不能直接从Internet/WAN寻址-它们仅用于局域网中的本地使用。要通过internet访问此类地址,您必须配置公开的路由器/网关以接受连接并将其转发到您的内部设备=NAT/端口转发等。I为该服务设置ASP.NET(udpate服务参考),然后将此站点上载到主机。然后在主机上,我将web.config地址配置为指向服务托管的静态ip地址,我再次收到此错误。我知道客户端无法访问B类网络地址,所以我编辑配置文件,直接连接到服务的机器。即使我尝试从配置为172.19.0.102:8732绑定的几乎相同的服务(使用basicHttpBinding)获取元数据,它也可以正常工作。我对您描述的什么是可访问的,什么是不可访问的,以及您的应用程序是如何部署的都有点茫然。那么,您可以从环回和真实地址本地(在托管计算机上)访问net.tcp服务吗?您能否从同一网络中的其他计算机访问该服务?它与真实客户端而不是测试客户端一起工作吗?您能否诊断托管计算机和客户端计算机上的TCP流量以查看详细信息。通信中是否涉及任何网络设备?你能简单地远程登录到这个端口吗?它看起来更像是在诊断网络问题。好的,Ladislav请查看我的帖子编辑,以获得其他测试结果。
Console.WriteLine("net.tcp://" + _bindAddress + "/");
ServiceHost myserviceHost = new ServiceHost(typeof(MyService), new Uri(String.Concat("net.tcp://", _bindAddress, "/")));
myserviceHost.Open();