【问题标题】:Does Silverlight client support WCF behaviors?Silverlight 客户端是否支持 WCF 行为?
【发布时间】:2011-06-26 08:04:39
【问题描述】:

我正在尝试将 WCF 端点行为添加到我的 Silverlight 客户端。但是我在运行时收到以下错误:

Unrecognized element 'behaviors' in service reference configuration.
Note that only a subset of the Windows Communication Foundation
configuration functionality is available in Silverlight.

WCF 端点不能在 Silverlight 中扩展是真的吗?下面列出了我的 ServiceReferences.ClientConfig 文件,显示了我如何尝试添加名为 MyBehaviorExtention 的扩展:

<configuration>

    <system.serviceModel>

        <extensions>
            <behaviorExtentions>
                <add
                    name="MyBehaviorExtention"
                    type="MyTest,
                          MyBehaviorExtention,
                          Version=1.0.0.0,
                          Culture=neutral,
                          PublicKeyToken=null" />
            </behaviorExtentions>
        </extensions>

        <behaviors>
            <endpointBehaviors>
                <behavior name="MyBehavior">
                    <MyBehaviorExtention />
                </behavior>
            </endpointBehaviors>
        </behaviors>

        <bindings>
            <basicHttpBinding>
                <binding
                    name="MyWebServicePortBinding"
                    maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647">
                    <security mode="None" />
                </binding>
            </basicHttpBinding>
        </bindings>

        <client>
            <endpoint
                name="MyWebServicePort"
                address="http://localhost:8080/MyService"
                binding="basicHttpBinding"
                bindingConfiguration="MyWebServicePortBinding"
                contract="MyServiceReference.MyWebService"
                behaviorConfiguration="MyBehavior" />
        </client>

    </system.serviceModel>

</configuration>

【问题讨论】:

    标签: silverlight wcf wcf-binding


    【解决方案1】:

    这不应该放在您的服务器端 web.config 中吗? ServiceReferences.ClientConfig 应该包含与 WebService 参考信息有关的信息,例如端点地址等。它包含服务的地址,并在编译生成的 .xap 文件中进行编译。

    这是我使用行为扩展的 web.config 示例:

     <extensions>
          <behaviorExtensions>
            <add name="silverlightFaults" type="MyApp.Web.Services.SilverlightFaultBehavior, MyApp.Web"/>
          </behaviorExtensions>
        </extensions>
    
        <behaviors>
          <endpointBehaviors>
            <behavior name="SilverlightFaultBehavior">
              <silverlightFaults />
            </behavior>
          </endpointBehaviors>
          <serviceBehaviors>
            <behavior name="">
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
    

    这就是我所需要的。我的 ServiceReferences.ClientConfig 仅包含端点地址。它仅包含 Windows Communication Foundation (WCF) 客户端配置的子集

    【讨论】:

    • 我的服务器是 Java - 所以没有服务器端 web.config。在客户端上,我只是尝试将消息检查器作为一种行为添加到端点。我能够以编程方式(在客户端)完成它,并且想知道为什么我不能通过配置来完成它。
    • 我认为答案是该文件不支持行为。见msdn.microsoft.com/en-us/library/cc197941(v=vs.95).aspx。 “请注意,此文件包含 .NET Framework 3.0 配置文件的内容子集,用于配置 Windows Communication Foundation (WCF) 客户端代理。”
    猜你喜欢
    • 1970-01-01
    • 2021-02-08
    • 2012-07-23
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多