Asp.net 如何从另一台计算机访问wcf服务?

Asp.net 如何从另一台计算机访问wcf服务?,asp.net,wcf,tcp,wcf-data-services,Asp.net,Wcf,Tcp,Wcf Data Services,我有一个wcf服务,并将其作为windows服务安装。 我可以从192.168.2.6计算机访问此服务: "net.tcp://192.168.2.5:2025/Services/mex". 我想使用静态ip和端口从另一台计算机访问此服务 如何访问此服务 我试着上网。tcp://staticIp:port/Services/mex 我得到了一个错误: Metadata contains a reference that cannot be resolved: 'net.tcp://[stati

我有一个wcf服务,并将其作为windows服务安装。 我可以从192.168.2.6计算机访问此服务:

"net.tcp://192.168.2.5:2025/Services/mex".
我想使用静态ip和端口从另一台计算机访问此服务

如何访问此服务

我试着上网。tcp://staticIp:port/Services/mex 我得到了一个错误:

Metadata contains a reference that cannot be resolved: 'net.tcp://[staticIP]:[port]/Services/mex'.If the service is defined in the current solution, try building the solution and adding the service reference again.
(我将我的[端口]导航到内部端口2025)

我的配置:

<system.serviceModel>
<diagnostics>
  <messageLogging logMalformedMessages="true" logMessagesAtTransportLevel="true" />
</diagnostics>
<bindings>
  <netTcpBinding>
    <binding name="NetTcpBinding_IServices" />
  </netTcpBinding>
</bindings>
<client>
  <endpoint address="net.tcp://192.168.2.5:2025/Services" binding="netTcpBinding"
    bindingConfiguration="NetTcpBinding_IServices" contract="myServices.IServices"
    name="NetTcpBinding_IServices">
    <!--<identity>
      <dns value="localhost" />
    </identity>-->
  </endpoint>
</client>
<services>
  <service name="F8ShadowWcfLib.Services">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration=""
      contract="F8ShadowWcfLib.IServices">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
      contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://192.168.2.5:2025/Services" />
      </baseAddresses>
    </host>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="false"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
myServ.Endpoint.Address=myEndpointAdd


我收到不同的错误:服务器拒绝了客户端凭据。

问题可能与此部分有关:

<identity>
    <dns value="localhost" />
</identity>

这项工作在本地进行,因为本地主机在本地有意义,但在网络上却没有意义

您可以通过多种方式验证此标识,例如指定运行服务的用户的UPN(用户主体名称)或运行服务的服务器的SPN(服务器主体名称)(尽管为此您必须注册SPN)

这篇文章应该稍微解释一下:


问题可能与此部分有关:

<identity>
    <dns value="localhost" />
</identity>

这项工作在本地进行,因为本地主机在本地有意义,但在网络上却没有意义

您可以通过多种方式验证此标识,例如指定运行服务的用户的UPN(用户主体名称)或运行服务的服务器的SPN(服务器主体名称)(尽管为此您必须注册SPN)

这篇文章应该稍微解释一下:


要允许单独的连接,请设置AddressFilterMode:Any 并设置服务端和客户端的标识

这篇文章介绍了标识设置:


要允许单独连接,请设置AddressFilterMode:Any 并设置服务端和客户端的标识

这篇文章介绍了标识设置:


你犯了什么错误?您是否尝试针对您的服务上的mex终结点生成代理?我将错误添加到问题中。我没有生成代理。不生成代理我无法访问?您遇到了什么错误?您是否尝试针对您的服务上的mex终结点生成代理?我将错误添加到问题中。我没有生成代理。我不能在不生成代理的情况下访问吗?本文在示例中使用HttpBinding。我将此wcf服务fot TCPBBinding作为windows服务使用。我是否必须将tcpBinding更改为HttpBinding才能跨网络访问?如前所述,TCP在网络上运行良好。主要的警告是你必须确保你的防火墙没有阻塞端口(在你的情况下是2025年)。我可以通过telnet,>telnet[staticIP][port]从远程计算机访问。。。我还尝试访问本地计算机,>telnet 192.168.2.5 2025。。。一切似乎都正常…你改变身份了吗?编辑了我的问题!我收到错误:服务器已拒绝客户端凭据。我想我可以在服务器wcf配置上写相同的标识名,对吗?本文在示例中使用了HttpBinding。我将此wcf服务编写为tcpBinding以用作windows服务。我是否必须将tcpBinding更改为HttpBinding才能跨网络访问帐户?正如前面提到的,TCP在网络上运行良好。主要的警告是你必须确保你的防火墙没有阻塞端口(在你的情况下是2025年)。我可以通过telnet,>telnet[staticIP][port]从远程计算机访问。。。我还尝试访问本地计算机,>telnet 192.168.2.5 2025。。。一切似乎都正常…你改变身份了吗?编辑了我的问题!我收到错误:服务器已拒绝客户端凭据。我想我可以在服务器wcf配置上写相同的标识名,对吗?
 [ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
   public class Services : IServices
   {
        .
        .
        .
   }