【问题标题】:SVC client proxy and WSDL hosted on remote server托管在远程服务器上的 SVC 客户端代理和 WSDL
【发布时间】:2012-01-30 16:18:21
【问题描述】:

我有一个 wsdl 和 xsd,然后我从 wsdl 生成了一个 SVC 客户端代理,wsdl 托管在 Internet 上某处的 Windows Server 2003(本地域外)上。 XSD 也位于同一位置。我可以在网络浏览器中看到它们,没有问题。

然后我做了一个简单的控制台应用程序客户端,当我运行客户端时,我在提琴手中看到正确的soap响应存在但在控制台应用程序响应为空,即SVC客户端无法反序列化它。

我确信 xsd + wsdl 是正确的并且响应也是正确的(我在提琴手中看到)。

当我将 wsdl 和 xsd 放在本地域服务器(内联网)上时,一切都很好,我看到应用程序中的响应已正确反序列化。

如果我在提琴手中比较这两种情况,我看不出原始响应有什么不同。

还有几点:我没有在 IIS 中托管 WCF 服务。我有一个远程运行的不同服务。如果我澄清更多事情,请告诉我。

谢谢。

编辑/更新:清理帖子。问题似乎不是 IIS6 或 IIS7,而是远程服务器在架构位置方面造成了麻烦。在 SVC 代理客户端 MessagContract 命名空间中,如果指向外部服务器,则在内网服务器上会出现问题,它运行得很好。

例子:

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(IsWrapped = false)]
public partial class responseTypeOfMethod1
{

[System.ServiceModel.MessageBodyMemberAttribute( Namespace = "http://testserver.xxxxx/yyyy.wsdl", Order = 0)]
public RAT_type RAT;
................
....
..

}

如果http://testserver.xxxxx指向本地服务器,一切正常,如果指向互联网服务器,则响应为空

【问题讨论】:

  • 有人见过这样的故障吗?我没有ideas.namspace url,本地服务器可以,外部服务器不行。
  • 你能不能尝试生成一个代理并在客户端使用它,看看反序列化是否正常工作。确保删除您添加的服务参考。

标签: wcf wsdl iis-6 wcf-client svc


【解决方案1】:

这里可能会发生两件事:

  1. 没有从远程服务器返回响应
  2. 客户端无法反序列化响应

使用 wireshark 或其他网络嗅探器查看返回的响应。

如果问题是由于无法反序列化造成的,则可能是命名空间不同。

【讨论】:

  • 谢谢 Shiraz 的回复,我在 fiddler 中检查过,响应在那里,也在 SVC 日志中,它是正确的响应。这是一个反序列化问题,但仅当 wsdl 位于我们的本地域之外时。架构位置有问题,当它在删除服务器上时。当我将命名空间指向本地服务器时,一切都很好。我正在清理 OP。
【解决方案2】:

问题解决了。这当然是命名空间问题,花了很长时间才发现服务器代码中的一个讨厌的地方,这是我们内部使用的一个工具。感谢所有回复您的时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2010-10-28
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多