Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不能';无法从远程计算机获取元数据,但本地可以_C#_.net_Wcf_Networking_Tcp - Fatal编程技术网

C# 不能';无法从远程计算机获取元数据,但本地可以

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

下面是我的App.config:

<?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();