0

我在 Visual Studio 2008 中有一个 Windows CE 项目。在 Windows Server 2003 上有多个对托管在 IIS 6.0 中的服务的 Web 引用。当我调试应用程序或在部署后运行时,我无法使用 Web 服务,因为以下网络异常:

消息:“无法建立与网络的连接。”

回应:没有

状态:System.Net.WebExceptionStatus.ConnectFailure

StackTrace:“在 System.Net.HttpWebRequest.FinishGetResponse() 在 System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request) 在 System.Web.Services.Protocols.HttpWebClientProtocol 的 System.Net.HttpWebRequest.GetResponse()。在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] 参数) 的 System.Web.Services.Protocols.SoapHttpClientProtocol.doInvoke(String methodName, Object[] 参数, WebClientAsyncResult asyncResult) 的 GetWebResponse(WebRequest 请求
)在 WMS4.Tests.TestService.GetData() ...

我创建了一个测试服务来测试行为。该服务只返回字符串“Success”。这是包含测试服务的 WCF 服务库中 app.config 的服务模式部分。其他服务已省略:

 <system.serviceModel>
    <serviceHostingEnvironment>
      <baseAddressPrefixFilters>
        <add prefix="http://*myserver*"/>
      </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
    <services>    
      <service name="WMSDataService.TestService">
        <endpoint address="" binding="basicHttpBinding" contract="WMSDataService.ITestService"></endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />       
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="basicConfig">
          <security mode="None">
          </security>
        </binding>
      </basicHttpBinding>     
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="basicBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>       
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

由于这是一个 Windows CE 项目,因此没有客户端 app.config 文件。

现在,生产设备无一例外地使用相同的服务。我还可以从测试控制台客户端使用该服务。似乎只有我正在测试的新移动设备受此影响。

我觉得这是一个代理身份验证问题,但我在参考文件中没有看到代理有任何问题。那么,我能做些什么来消除这个异常并使用服务呢?

4

1 回答 1

2

对于后代:

我无法弄清楚为什么只有新设备无法使用服务(请参阅上面的错误详细信息)。来自控制台和现有生产设备的测试都毫无问题地使用了这些服务。

为了解决这个问题,我为每个端点设置了一个绝对地址而不是相对地址,如下所示:

<system.serviceModel>   
    <services>
      <service name="WMSDataService.TestService">
        <endpoint address="http://*MyServerURL*/WMSDataService.TestService.svc" binding="basicHttpBinding" contract="WMSDataService.ITestService" />
          </service>   
      </services> 
  </system.serviceModel>
于 2014-05-13T21:30:21.657 回答