从WCF服务调用Web服务

时间:2009-10-01 10:55:21

标签: wcf web-services

我遇到了从WCF服务使用Web服务(c#.net)的问题。 我得到的错误是EndPointNotFoundException“TCP错误代码10061:无法建立连接,因为目标计算机主动拒绝它”

我写了一个单元测试来检查我是否可以向Web服务发送请求并且它工作正常 [单元测试使用与我的WCF服务相同的绑定配置]

Web服务和WCF服务(客户端)具有basichttp绑定。

是否有人从WCF服务调用Web服务有类似的问题?

服务模型部分如下

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="DataService" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                    <message clientCredentialType="UserName" algorithmSuite="Default"/>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://10.22.33.67/Service/DataService.asmx" binding="basicHttpBinding" 
            bindingConfiguration="DataService" contract="Service.DataService" name="DataService"/>
    </client>
    <services>
        <service name="TestToConsumeDataService.WCFHost.Service1" behaviorConfiguration="TestToConsumeDataService.WCFHost.Service1Behavior">
            <!-- Service Endpoints -->
            <endpoint address="" binding="basicHttpBinding" contract="TestToConsumeDataService.WCFHost.IService1">
                <!-- 
          Upon deployment, the following identity element should be removed or replaced to reflect the 
          identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
          automatically.
      -->
                <identity>
                    <dns value="localhost"/>
                </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="TestToConsumeDataService.WCFHost.Service1Behavior">
                <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="true"/>
                <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>

单元测试项目也使用相同的服务模型部分,它可以工作。唯一的问题是从另一个WCF服务调用服务。你能建议吗。

2 个答案:

答案 0 :(得分:1)

您提到了“webservice”和“WCF服务” - 所以“webservice”是旧式的ASMX Web服务吗?

您的WCF服务是如何托管的?在IIS?您是否有从web.config中的WCF调用的Web服务的必要端点信息?

您能告诉我们您的相关配置吗,例如:你的web.config的<system.serviceModel>部分(或app.config,如果你是自托管WCF服务的那部分),请吗?

错误表示没有web服务正在侦听您正在使用的地址,或者您没有访问权限。你错过了一些安全措施吗?

MARC

答案 1 :(得分:0)

看起来您需要调用Web服务。

  • 此配置在单元测试的配置文件中是正确的。
  • 但是在WCF服务的配置文件中它不正确或缺失。

如果你有两个dll,其中一个调用另一个,那么它就是第一个使用的dll的配置文件。但是,当您浏览WCF跃点时,它将接管WCF服务的配置文件。

希望这有帮助

西拉