SVC客户端代理和远程服务器上托管的WSDL

时间:2012-01-30 16:18:21

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

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

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

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

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

如果我比较提琴手中的两种情况,我认为原始反应没有任何差异。

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

谢谢。

编辑/更新:已删除的帖子。问题似乎不是IIS6或IIS7,它是远程服务器创建模式位置的麻烦。在SVC代理客户端MessagContract命名空间中,如果指向外部服务器,则在Intranet服务器上运行问题就会出现问题。

示例:

[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指向本地服务器,那么一切正常,如果指向互联网服务器,则响应为空

2 个答案:

答案 0 :(得分:1)

这里有两件事情可以发生:

  1. 未从远程服务器返回响应
  2. 客户端无法反序列化响应
  3. 使用wireshark或其他网络嗅探器来查看回复时的响应。

    如果问题是由于无法反序列化,则可能是命名空间的差异。

答案 1 :(得分:1)

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