带有它的Web服务提供了两个接口,导致WPF应用程序出错

时间:2011-09-20 20:41:35

标签: .net wpf wcf-binding wcf-data-services

我有一个提供两个接口的Web服务。一个是“MyAppNameData”,另一个是“MyAppNameSync”。我正在为WPF应用程序添加两个服务引用。在代码中,当我使用“MyAppNameData”引用时,我没有收到错误。当我使用“MyAppNameSync”时,会生成以下错误:

Could not find default endpoint element that references contract 'MyAppNameSync.IMyAppNameSync' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

我以完全相同的方式添加了两个引用,但是使用BasicHttpBinding添加了MyAppNameData,并且使用WSHttpBinding添加了MyAppNameSync。我不知道为什么会这样。

这是客户端app.config文件中的serviceModel元素。如您所见,有一个端点元素引用了合同“MyAppNameSync.IMyAppNameSync”,与错误消息的内容相反:

    <system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IMyAppNameData" 
                closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" 
                sendTimeout="00:01: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>
        <wsHttpBinding>
            <binding name="WSHttpBinding_IMyAppNameSync" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" 
                hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" 
                 maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                <security mode="Message">
                    <transport clientCredentialType="Windows" 
                     proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="Windows" 
                    negotiateServiceCredential="true"
                        algorithmSuite="Default" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://computername.domainname.home/MyAppNameSyncService/MyAppNameData.svc"
            binding="basicHttpBinding" 
            bindingConfiguration="BasicHttpBinding_IMyAppNameData"
            contract="MyAppNameData.IMyAppNameData" 
            name="BasicHttpBinding_IMyAppNameData" />
        <endpoint address="http://computername.domainname.home/MyAppNameSyncService/MyAppNameSync.svc"
            binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMyAppNameSync"
            contract="MyAppNameSync.IMyAppNameSync" 
            name="WSHttpBinding_IMyAppNameSync">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>
    </client>       
</system.serviceModel>

任何建议都会受到赞赏。

由于

1 个答案:

答案 0 :(得分:2)

行。我现在有工作。我显然有几个错误同时发生。正如雷切尔在上面的评论中所说,我试图让一个最简单的案例起作用。但是,最初无法做到。从主机中删除其中一个服务,所以我只有MyAppNameData.svc最初没有工作。我知道Web服务的简单版本过去是有效的,所以我试图让一切都回到那个工作点。

我使用我现有的一个ASP.NET Web应用程序指向我一直用于测试的Web服务实例,并且我能够实现这一点(即使有两个服务; MyAppNameData.svc和主机MyAppNameWebService中的MyAppNameSync.svc)。所以,我知道问题出在我的WPF应用程序和Web服务之间。

我看过几个讨论主题声明“如果你在类库中调用服务并从另一个项目中调用类库,则会出现此错误”。但是,我认为我在解决问题的步骤中已经解决了这个问题。但是,当我从我的WPF项目中删除所有内容并重建所有内容(第100次)时,确保“将WS配置设置包含到主项目app.config中,如果它是winapp或web.config,如果它是网络应用程序“如中所述 this thread,我能够让它发挥作用!

之前我尝试过这个解决方案,但显然我还没有解决其他问题。我不再收到错误,并且能够连接并使用来自同一主机的两个独立服务。所以,我在做生意。

谢谢大家的回复和建议。现在,迎接其他挑战!