在Windows CE设备上使用WCF服务时出现WebException

时间:2014-05-13 17:30:44

标签: web-services wcf windows-ce servicehost webexception

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

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

回复:没什么

状态:System.Net.WebExceptionStatus.ConnectFailure

StackTrace:“at System.Net.HttpWebRequest.finishGetResponse()at System.Net.HttpWebRequest.GetResponse()at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest的 请求) System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest的  请求)  System.Web.Services.Protocols.SoapHttpClientProtocol.doInvoke(字符串 methodName,Object []参数,WebClientAsyncResult asyncResult)
在System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object [] parameters)at 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文件。

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

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

1 个答案:

答案 0 :(得分:2)

为后代:

我无法找出为什么只有新设备无法使用这些服务(请参阅上面的错误详情)。来自控制台和现有生产设备的测试都没有任何问题地使用服务。

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

<system.serviceModel>   
    <services>
      <service name="WMSDataService.TestService">
        <endpoint address="http://*MyServerURL*/WMSDataService.TestService.svc" binding="basicHttpBinding" contract="WMSDataService.ITestService" />
          </service>   
      </services> 
  </system.serviceModel>