问题标签 [soap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1153 浏览

.net - 通过 Web 服务发送复杂数据的首选方法是什么?

现在是 2008 年,我仍然对这个感到困惑。因此,我正在开发一种需要将复杂类型传递到其中并从中返回的 Web 方法。我正在玩弄的两个选项是:

  1. 传递和返回具有数据和行为的实际业务对象。运行 wsdl.exe 时,它​​会自动创建仅包含数据部分的代理类,并且这些代理类将自动与服务器端的真实业务对象相互转换。在客户端,他们只能使用哑代理类型,并且他们必须将它们映射到他们认为合适的一些真实的业务对象中。这里的一个很大的缺点是,如果我同时“拥有”服务器端和客户端,并且我想使用同一组真实的业务对象,我可能会遇到名称冲突等问题。(因为真实对象和代理名称相同。)

  2. 忘记尝试传递“真实”的业务对象。相反,只需创建简单的 DataTransfer 对象,我将手动将其映射到我的真实业务对象。无论如何,它们仍然会被 wsdl.exe 复制到新的代理对象,但至少我没有欺骗自己认为 Web 服务可以本机处理具有业务逻辑的对象。

顺便说一句 - 有谁知道如何告诉 wsdl.exe不要复制对象?我们不应该直接告诉它,“嘿,在这里使用这个现有的类型。不要复制它!”

无论如何,我现在已经确定了#2,但我很好奇你们的想法。我感觉一般来说有更好的方法可以做到这一点,而且我的所有观点可能都不完全准确,所以请让我知道你的经历。

更新:我刚刚发现 VS 2008 在添加“服务引用”时可以选择重用现有类型,而不是在代理文件中创建全新的相同类型。甜的。

0 投票
3 回答
13514 浏览

apache-flex - SoapException:从 Flex 调用 .NET Web 服务时发生根元素丢失

我有一个在页面中嵌入了 Flex 应用程序的 .net Web 应用程序。这个 flex 应用程序调用一个 .net web 服务。我可以通过调试器跟踪执行过程,一切看起来都很好,直到我得到响应:

来自 flex 的调用看起来不错,通过 web 服务的执行很好,但这是我通过 wireshark 捕获的响应,这是怎么回事?

我尝试了几种网络方法,从“Hello World”到参数化方法……都以相同的响应返回……

我认为这可能与使用“--->”进行编码有关,但我不确定如何控制 .net 作为响应呈现的内容。

0 投票
3 回答
13634 浏览

.net - 使用 SOAPClient 从 ASP 调用 ASP.NET Web 服务

我有一个 ASP.NET 网络服务,其内容如下:

我使用类似的东西从 ASP 调用 Web 服务:

我遇到的问题是,当 XML 到达 ProcessMessage 方法时,Web 服务管道沿途添加了一个默认命名空间。即,如果我在 ProcessMessage(XmlDocument message) 中设置断点,我会看到:

当我在线捕获数据包时,我可以看到 SOAP 工具包发送的 XML 与 .NET WS 客户端发送的 XML 略有不同。SOAP 工具包发送:

虽然 .NET 客户端发送:

自从我使用 ASP/SOAP 工具包调用 .NET Web 服务已经很久了,我不记得我用来解决此类问题的所有聪明技巧/SOAP-fu。

有任何想法吗?一种解决方案是建立一个 COM 可调用 .NET 代理,该代理将 XML 作为字符串参数并代表我调用 WS,但这是我希望不做的额外复杂性/工作层。

0 投票
2 回答
2845 浏览

wcf - WCF - 域对象和 IExtensibleDataObject

典型场景。我们使用老式的 XML Web 服务在服务器场与多个分布式本地客户端internally之间进行通信。不涉及第三方,只有我们自己和我们的客户使用的应用程序。

我们目前正在考虑从模型XML WS转向WCF/object-based模型,并一直在尝试各种方法。其中之一涉及直接通过网络传输域对象/聚合,可能会在它们上调用 DataContract 属性。

通过在 上使用IExtensibleDataObjectDataContract使用 Order 属性DataMembers,我们应该能够处理简单的属性版本控制问题(请记住,我们控制所有客户端并且可以轻松地强制更新它们)。

我一直听说我们应该通过网络使用专用的、仅传输的数据传输对象 ( DTOs)。

为什么?还有理由这样做吗?我们在服务器端和客户端使用相同的域模型,当然,只有在认为正确和“必要”时才预填充集合等。集合属性利用服务定位器原理和 IoC 来调用NHibernate-based“服务”以直接(在服务器端)获取数据,并在客户端调用WCF“服务”客户端与WCF服务器场对话。

那么 - 为什么我们需要使用DTOs?

0 投票
4 回答
2066 浏览

c# - 使用 SOAP 数据包调试 Web 服务

我有一个用 C# 创建的 Web 服务和一个由我的客户提供的测试工具。不幸的是,我的 Web 服务似乎没有解析由测试工具创建的对象。我相信问题在于序列化肥皂包。

使用 TCPTrace 我能够将肥皂数据包传递给 Web 服务,但只能在远程机器上,所以我无法在那里调试它。有没有办法用生成的肥皂包调用我的本地 web 服务,而不是我当前的测试工具,在那里我手动创建对象并通过 web 引用调用 web 服务?

[编辑] 我得到肥皂包的机器在虚拟机上,所以我无法将它链接到我的机器。我想我正在寻找一个工具,我可以将肥皂包粘贴到其中,然后它会调用我的网络服务

0 投票
4 回答
9632 浏览

architecture - 在 REST 与 SOAP 服务之间进行选择的指南?

有没有人有关于在 REST 与 SOAP 之间做出决定的文档或指南的链接?我了解这两个方面,但我正在寻找一些关于关键决策点的参考资料,例如安全性,这可能会让你倾向于其中一个。

0 投票
3 回答
1089 浏览

python - 在 python 中使用 Web 服务的最佳方式是什么?

我有一个中型应用程序,它作为我无法控制的 .net Web 服务运行,我想在它上面创建一个松散的 pythonic API 以启用简单的脚本编写。

我想知道在 python 中使用 Web 服务的最佳/最实用的解决方案是什么。

编辑:我需要消耗一个复杂的肥皂 WS,我无法控制它。

0 投票
1 回答
1403 浏览

web-services - SOAP Web 服务所需的正确虚拟目录访问权限级别是多少?

在 Server 2003 机器上设置新的虚拟目录以在 IIS 6.0 中托管 SOAP Web 服务时,我需要设置虚拟目录的访问权限。各种权限是允许/禁止以下内容:

  • 运行脚本(如 ASP)
  • 执行(例如 ISAPI 或 CGI)
  • 浏览

SOAP Web 服务正在通过 SOAP3.0 ISAPI 服务器发布,并且在 IIS 管理器的“Web 服务扩展”窗格中将扩展设置为“允许”。

由于我不想将此目录的内容公开给网络,我知道浏览是不可取的。但是,我知道是否需要启用Run scriptsExecuteWrite权限才能正确发布此 Web 服务。Web 服务用于在服务器和远程客户端之间发送和接收 XML 数据集。我的 SOAP Web 服务的虚拟目录的正确访问权限级别是多少?

0 投票
3 回答
12743 浏览

.net - 如何从 ASP.NET 中的肥皂异常中提取内部异常?

我有一个像这样的简单 Web 服务操作:

然后我有一个使用 Web 服务然后调用操作的客户端应用程序。显然它会抛出一个异常:-)

在我的捕获块中,我想做的是提取实际异常的消息以在我的代码中使用它。捕获的异常是 a SoapException,这很好,但它的Message属性是这样的......

...而且InnerExceptionnull

我想做的是提取(我的示例中的文本)的Message属性,有人可以帮忙吗?如果可以避免,请不要建议解析.InnerExceptionHelloWorldExceptionMessageSoapException

0 投票
5 回答
14351 浏览

visual-studio - 如何从 SOAP 消息中删除“VsDebuggerCausalityData”数据?

我遇到了一个问题,即来自一个特定客户端的传入 SOAP 消息被我们的 XML 防火墙设备标记为无效并被拒绝。似乎 Visual Studio 正在插入额外的有效负载数据;我们认为额外的数据可能会导致问题 b/c 我们在这些消息中看到“VsDebuggerCausalityData”,但在从没有问题的其他客户端发送的其他消息中却没有。无论如何,这是一个起点。

我的问题是客户端如何删除这些额外的数据并仍然从 VS 运行?为什么VS把它放在那里?

谢谢。