无法通过同一网络中的其他计算机访问我的WCF服务

时间:2011-02-20 15:34:22

标签: wcf

我写了一个最简单的wcf服务,它有一个方法

// return a+b
int ICalc::add(int a, int b) 

当我尝试通过本地计算机访问服务时 - 我得到的结果没有问题。 但尝试从其他机器访问我无法获得服务。

我尝试定义

<security mode="None"/>

来自客户端计算机。

我尝试定义网页'default.htm'以查看我是否可以访问并查看网页(更清楚..我可以访问并查看default.htm页面)。

我尝试使用IP访问并使用机器名称 - 但没有!什么都行不通。

我将我的服务定义为WAS。

有人可以帮我吗?

服务web.config文件:(192.168.1.117是机器ip - 但我也尝试使用localhost和机器名......没什么帮助)

<system.web>
  <compilation debug="true" targetFramework="4.0" />
  <httpRuntime maxRequestLength="10000000" />
</system.web>
<system.serviceModel>
  <services>
    <service name="ServiceLibrary.ServiceProxy" behaviorConfiguration="ServiceBehavior">
    <endpoint address="" binding="wsHttpBinding" contract="ServiceLibrary.IServiceProxy">
        <identity>
          <dns value="192.168.1.117:50025"/>
        </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    <host>
      <baseAddresses>
        <add baseAddress="http://192.168.1.117:50025/ServiceProxy/" />
      </baseAddresses>
    </host>
  </service>
</services>  
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

              

客户端app.config文件:(这里我也尝试使用机器ip并尝试使用机器名称 - 我也尝试禁用客户端和服务器的防火墙......没什么帮助)

 <system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="WSHttpBinding_IServiceProxy" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false" >

              <security mode="None"/>

                <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
                    maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://192.168.1.117/ServiceProxy.svc"
            binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IServiceProxy"
            contract="ServiceReference1.IServiceProxy" name="WSHttpBinding_IServiceProxy">
            <identity>
                <dns value="192.168.1.117" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>

2 个答案:

答案 0 :(得分:1)

您忘记了客户端配置文件中的端口:

address="http://192.168.1.117:50025/ServiceProxy.svc"

编辑:如果仍然失败,请使用浏览器直接从客户端计算机浏览到address:你得到了什么?

另外,你到底发生了什么错误?

答案 1 :(得分:0)

我在客户端配置文件中添加了端口 - 但它仍然没有帮助,我仍然无法打开该服务。

(在r.open()

中失败
ServiceProxyClient r = new ServiceProxyClient();
r.Open();