0

我在针对 .NET STS 和安全 Web 服务运行 Java(使用 Metro)客户端时遇到问题。但是,当我运行基于 .NET 的客户端时,它总是可以工作。

您可能已经知道,当运行 JAX-WS 客户端时,它会在运行时向服务请求元数据(即使它在设计时已经运行了 wsimport)。但是,似乎这个运行时元数据请求是我的问题所在。

我面临的问题是,在元数据的运行时请求期间,我的 WCF 服务导出的一些 WSDL 导致 Java 客户端在 mex 请求期间只是“挂起”。当它挂起时,它甚至没有到达发出 RST 请求的地步。

例如,我可以到达一个我有 9 个 [OperationContract] 属性的地方并且它可以工作。但是当我添加第 10 个服务方法时,它不起作用。但是,如果我删除 9 个中的一个,则它可以工作。我知道特定方法没有问题,因为我可以混合和匹配并且保持相同的模式。

我似乎无法推断出某些 WSDL 有效而某些无效的模式或原因。我强烈怀疑服务方法的数量是有限的。但是,这可能是导出的 WSDL 的“整体复杂性”问题吗?

有没有人有任何想法?有没有人遇到过这个问题?

如果需要更多信息,我很乐意发布。我只是想让最初的帖子保持可管理的长度。

我还要补充一点,我在 .NET 4 中运行 STS 和安全 Web 服务,它们基于 WIF(所以我不必担心安全设置)。我的 .NET 客户端也是 .NET 4。在 Java 方面,我使用 Netbeans 6.9.1 和运行 Glassfish 3 的 Metro 2.1。我已经验证在 Metro 2.0 上运行时遇到了同样的问题。

4

2 回答 2

1

有关详细答案,请参阅运行时期间使用 Metro/JAX-WS/WSIT 的 WSDL 请求。

于 2011-01-12T22:27:12.470 回答
0

按照给出的示例,有可能达到 MaxMessageReceivedSize 或 MaxStringContentLength 限制。您是否尝试增加 MaxMessageReceivedSize 和 MaxStringContentLength 的值进行绑定?您可以尝试启用 WCF 跟踪,如果达到任何此类限制,则会记录一个警告。

于 2010-11-26T19:55:29.633 回答