none
更新客户端WCF重新引用问题? RRS feed

  • 问题

  • 为什么没次更新客户端WCF服务时,配置文件web.config的WCF配置为什么会重新配置,该怎么写,WCF新手求帮助!!

    服务端配置:

    <system.serviceModel>
            <behaviors>
                <serviceBehaviors>
                    <behavior name="workPlatformBehavior">
                        <serviceMetadata httpGetEnabled="true" />
                        <serviceDebug includeExceptionDetailInFaults="true" />
                    </behavior>
                </serviceBehaviors>
            </behaviors>
            <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
            <services>
                <service behaviorConfiguration="workPlatformBehavior" name="WorkPlatform.Presentation.WCFServices.Organization.RoleModuleServices">
                    <endpoint binding="basicHttpBinding" contract="WorkPlatform.Presentation.WCFServices.Organization.IRoleModuleServices"></endpoint>
                </service>
                <service behaviorConfiguration="workPlatformBehavior" name="WorkPlatform.Presentation.WCFServices.Organization.PowerModuleServices">
                    <endpoint binding="basicHttpBinding" contract="WorkPlatform.Presentation.WCFServices.Organization.IPowerModuleServices"></endpoint>
                </service>
            </services>
        </system.serviceModel>

    客服端引用配置(自动生成的):

    <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="BasicHttpBinding_IRoleModuleServices" 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>
            </bindings>
            <client>
                <endpoint address="http://localhost:3264/Organization/RoleModuleServices.svc"
                    binding="basicHttpBinding" contract="Organization.RoleMuduleServices.IRoleModuleServices" />
            </client>
        </system.serviceModel>
    如果我在服务端写了bindings配置,客服端能不能根据我服务端写的配置进行生成?比如我在服务端把所有服务的binding指向一个bingdings时,客户端能不能只生成一个bindings?

    2013年5月24日 13:02

答案

  • 你好,

    你是想问为什么服务端的binding配置里没有closeTimeout 等设置而且也没有<bindings>标签么?这是因为服务端如果没有显式设置这些属性,它使用的是默认值(如果使用WCF提供的binding,例如basicHttpBinding、wsHttpBinding等,并且想使用其默认配置的话,就不需要在<bindings>标签里进行设置),添加服务引用后客户端会将这些默认值显示出来。

    如果你对服务端的配置进行更改,然后更新服务引用,客户端的配置文件也会相应变化。


    Haixia
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年5月28日 2:36
    版主

全部回复

  • 你好,

    你是想问为什么服务端的binding配置里没有closeTimeout 等设置而且也没有<bindings>标签么?这是因为服务端如果没有显式设置这些属性,它使用的是默认值(如果使用WCF提供的binding,例如basicHttpBinding、wsHttpBinding等,并且想使用其默认配置的话,就不需要在<bindings>标签里进行设置),添加服务引用后客户端会将这些默认值显示出来。

    如果你对服务端的配置进行更改,然后更新服务引用,客户端的配置文件也会相应变化。


    Haixia
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年5月28日 2:36
    版主
  • 不好意思,这几天忙没上MSDN。

    我要的效果是这样的:

    我在wcf服务端配置了一个bindings,然后我把所有的开放的服务都指向这个bindings,但是客服端引用的时候,生成的bindings始终不会和服务端配置的bindings一样,而且每个服务都会生成一个bindings,我希望能生成一个bindings然后client endpoint 全指向这个bindings

    谢谢!

    2013年6月5日 7:27
  • 你好,

    如果你想为所有终结点使用一个你配置好的binding, 你可以为binding设置一个名称,然后将终结点的bindingConfiguration设为此名称。例如(多个终结点的bindingConfiguration的值可以设为相同的)

     <endpoint
            address="http://test:8080/Hello1"
            contract="..."
            binding="basicHttpBinding"
            bindingConfiguration="shortTimeout"
    <bindings>
        <basicHttpBinding 
            name="shortTimeout"
            timeout="00:00:00:01" 
         />
         <!--<basicHttpBinding 
            name="Secure" />
            <Security mode="Transport" />-->
    </bindings>
    
    设置好之后,build服务,为客户端添加引用,客户端会自动生成与服务端一致的binding。

     


    Haixia
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年6月5日 9:58
    版主
  • 不行,我也想解决这个问题.
    2013年6月9日 2:40