这已经发生了几次让我知道。如果我将许多OperationContract添加到ServiceContract,WCF测试客户端应用程序会抛出异常:
“无法添加服务。可能无法访问服务元数据。请确保您的服务正在运行并公开元数据。”
详情继续:
错误:无法从中获取元数据。请求失败,HTTP状态为400:错误请求。
如果我删除了几个操作合同,那么一切都很好。测试客户端之外也没关系。
答案 0 :(得分:1)
您是否可以更具体地说明您必须从服务合同中删除哪些类型的操作才能使其正常工作?
以下是.NET Framework 3.5 SDK附带的WcfTestClient.exe工具中的一些已知限制。请注意,所有这些问题都已在.NET 3.5 SP1附带的版本中得到修复。
答案 1 :(得分:0)
这是我必须添加到我的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>
答案 2 :(得分:0)
感谢您的回复。
这些是令人讨厌的行:
<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 :(得分:0)
这是我遇到过的最奇怪的问题之一。您可能需要检查代码并注意以下问题:
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。请注意返回声明。它试图返回一个计算值。我删除了这个数据成员;它运作良好。