【问题标题】:Are there known limitations with the WCF Test Client app?WCF 测试客户端应用程序是否存在已知限制?
【发布时间】:2009-02-20 21:46:28
【问题描述】:

我知道这已经发生过几次了。如果我将许多 OperationContract 添加到 ServiceContract,WCF 测试客户端应用程序会引发异常:

“未能添加服务。服务元数据可能无法访问。请确保您的服务正在运行并公开元数据。”

继续详细说明:

错误:无法从 获取元数据。请求失败,HTTP 状态 400:错误请求。

如果我删除了几个运营合同,那么一切都很好。外面的测试客户端也可以。

【问题讨论】:

  • 有,我不知道它是否与你的有关。我对巨大的合同定义有疑问,但我认为我没有收到 400 错误。我的问题与正在传输的定义大小的限制有关。给我一秒钟,我会看看我做了什么来解决它。

标签: wcf wcf-client


【解决方案1】:

您能否更具体地说明您必须从服务合同中删除哪些操作才能使其正常工作?

以下是 .NET Framework 3.5 SDK 附带的 WcfTestClient.exe 工具的一些已知限制。请注意,所有这些问题都已在 .NET 3.5 SP1 附带的版本中得到修复。

  • 客户端不与调用的服务保持会话。所有调用都是在新的代理实例上进行的
  • 客户端代理自动生成的配置文件可以查看但不能编辑
  • 无法调用使用 XML 序列化程序而不是数据协定序列化程序的服务
  • 无法调用使用消息契约的服务

【讨论】:

    【解决方案2】:

    感谢您的回复。

    这些是有问题的行:

    <OperationContract(), FaultContract(GetType(WcfService.Common.DefaultFaultContract))> _
    Function GetJobSubTypesForJobTypeList(ByVal jobTypeList As Dictionary(Of Integer, String)) As List(Of JobSubTypeOfJobTypeDTO)
    
    <OperationContract(), FaultContract(GetType(WcfService.Common.DefaultFaultContract))> _
    Function GetActivityTypesForJobTypeList(ByVal jobTypeList As Dictionary(Of Integer, String)) As List(Of ActivityTypeOfJobTypeDTO)
    

    事实证明,我们在返回类型 (DTO) 中缺少 setter 和默认构造函数。

    【讨论】:

    • 你从哪里得到这些台词的?
    • 抱歉,两年前换了一份工作——不记得了
    【解决方案3】:

    这是我遇到的最奇怪的问题之一。您可能需要检查您的代码并注意以下问题:

    Private _NetPay As Boolean
    <DataMember()> _
    Public Property NetPay() As Boolean
        Get
            Return _Amount = 0
        End Get
        Set(ByVal value As Boolean)
            _NetPay = value
        End Set
    End Property
    

    如上所述,我已经定义了一个 DataMember。注意返回语句。它试图返回一个计算值。我删除了这个数据成员;效果很好。

    【讨论】:

      【解决方案4】:

      这是我必须添加到我的 devenv.exe.config 以便让我的 WCF 测试客户端与非常大的服务一起工作的内容。然后我不得不重新启动我的 IDE。这可能不是您想要的,但我希望它有所帮助。

      <system.serviceModel>
        <bindings>
          <customBinding>
            <binding name="MyBinding">
              <textMessageEncoding>
                <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
              </textMessageEncoding>
              <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"/>
            </binding>
          </customBinding>
        </bindings>
        <client>
          <endpoint binding="customBinding" bindingConfiguration="MyBinding" contract="IMetadataExchange" name="http"/>
        </client>
      </system.serviceModel>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        相关资源
        最近更新 更多