问题标签 [soap-extension]

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 投票
1 回答
3326 浏览

.net - 记录 .net SOAP Web 服务的请求/响应

我正在使用第三方 .NET SOAP WebService (.asmx)。我想记录请求和响应。我见过一些使用SoapExtensions的解决方案。但我喜欢在我的系统中集成日志记录,有些是这样的:

我可以这样做吗?还有其他解决方案吗?

更新:我喜欢避免序列化请求和响应对象。但我现在正在这样做。

0 投票
1 回答
826 浏览

c# - 将信息传递给应用了 SoapExtensionAttribute 的对象

在我的应用程序中,我正在调用 Web 服务,通过使用 SoapExtension 和 SoapExtensionAttribute,我可以拦截传入和传出的 SOAP 消息以进行日志记录。我使用http://msdn.microsoft.com/en-us/magazine/cc164007.aspx中的示例作为输入。但现在我想更进一步。我有一个 Windows 客户端,它调用我的类(在一个单独的项目中),然后该类调用 Web 服务。我现在可以截获 SOAP 消息,但不是直接将它们记录到文件中,而是希望将这些消息传递回调用 Web 服务的类,也传递回调用我的类的客户端。这些是我到目前为止所做的代码更改:

我现在想将soapInput 和soapOutput 传递回包含应用此属性的方法的类。关于我应该如何做到这一点的任何线索?

0 投票
1 回答
1310 浏览

c# - SOAP 扩展启用/禁用 Web.config

我创建了一个继承自 SOAPExtension 的 TraceExtension 类。然后,我使用签名上方的 [TraceExtension] 将扩展应用到 WebMethod。这一切都很好,并输出到 TraceExtension 类中指定的文件。

我想在 web.config 中真正启用/禁用它,有谁知道如何做到这一点,或者是否可以做到?

提前致谢。

0 投票
2 回答
2300 浏览

c# - C# 扩展 SoapExtension -

背景: 我正在尝试编写一个简单的 SoapExtension 类来记录来自 asmx Web 服务的入站/出站 Soap 消息。在msdn 上的这篇文章之后,我已经能够让事情正常进行。但是,我真的很想了解它为什么/如何工作,而不仅仅是复制和粘贴代码。

问题: 我正在努力掌握的是示例中对 IO 流的处理。我在网上阅读的所有其他文章都以相同的方式处理流......首先获取对原始流的引用,创建内存中的“工作”流,然后根据需要交换内容。

第一个问题是,在这种情况下,“流链接”是什么意思?我对流的理解是,写入任何流都会自动写入管道中的“内部”流。如果是这样,为什么需要手动将内容从一个流复制到另一个流?

第二个问题是,在示例 Copy 方法中,他们每次都创建一个 StreamReader 和 StreamWriter ,而不释放它们——这不会给 GC 带来额外的压力吗?在高流量 Web 服务上似乎不是您想要的东西......我尝试将两者都包装在 using 语句中,但处理读取器/写入器也关闭了导致更严重错误的流。.NET 4 有新的 Stream.CopyTo(Stream) 方法,但是对于 .NET 3.5 更好的方法是什么?

0 投票
2 回答
15736 浏览

c# - 如何创建 web.config 文件以加载 SoapExtension?

我需要使用一个SoapExtension子类(我已经创建),但似乎这个类只能通过web.config文件初始化。我已经读过它应该可以通过app.config文件来实现,但我不知道该怎么做。

问题:我的项目中没有web.config文件。

所以我手动创建了一个,内容如下:

尽管在每个 SoapExtension 方法中分派了断点,但在运行时没有任何反应,似乎它从未被初始化也没有被调用。我的 SoapService 初始化正常,但没有任何扩展。

我想手动创建 web.config 文件可能不足以考虑到它,所以我想知道如何正确配置我的应用程序以具有 web.config 文件以使用我的 SoapExtension。它应该去初始化我的类、processMessage 和chainStream 的东西。

注意:这是我的第一个 SoapExtension 实现,所以我不太确定我在做什么。

0 投票
1 回答
2543 浏览

.net - .NET SoapExtension 无法修改服务器上的肥皂请求

我正在尝试在 .NET 中实现一个 SoapExtension 来压缩所有的肥皂流量(请求和响应)。我可以控制客户端和服务器。我已经开始复制这个:http ://www.mastercsharp.com/article.aspx?ArticleID=86&&TopicID=7并稍微修改它,我有一个问题。

当它从客户端发送时,我能够修改(压缩)请求正文,它到达服务器,反向操作(解压缩)也很好,但我似乎无法让框架反映更改我对流对象进行了处理!在服务器上,我为 newStream 对象设置了正确的数据,但是当调用 WebMethod 时,参数仍然被压缩(因此无效)。知道为什么吗?

为了让包括我自己在内的每个人都更容易,我将 SoapExtension 简化为:

}

它仍然无法正常工作。当服务器(WriteInput 方法)接收到soap 请求时,所有“false”值都更改为“true”并将数据保存到newStream 对象,但在webmethod 调用中仍会显示“false”值!

我的电话如下所示: 客户:

服务器:

只是为了完整性,这是属性类

我已经阅读了这篇文章:h**p://hyperthink.net/blog/inside-of-chainstream/ 我很确定我正确地使用了链流方法。我知道还有其他方法可以做到这一点,但这看起来确实是一个干净的选择。我已经阅读了有关该主题的各种文章,这篇http://msdn.microsoft.com/en-us/magazine/cc188761.aspx文章启发了我一个解决方法,我可以使用

在 ProcessMessage 方法中直接操作肥皂体(这工作正常,但很难看)

我是否忽略了一些明显的东西?应用程序的其他部分是否会干扰服务器上的流链接?如果有人对此有任何见解,我将非常高兴。

0 投票
1 回答
2317 浏览

.net - 肥皂扩展来记录我的网络服务

我有这个soap扩展来跟踪我的网络服务:

在我的 web.config 中:

当我执行 Web 服务并在肥皂扩展上放置一个断点时 - 没有任何反应。我正在使用带有 json 而不是 xml 的 web 服务。我怎样才能使这个肥皂扩展工作?

0 投票
1 回答
1975 浏览

c# - .Net Web 服务客户端 SoapExtension 搞砸了来自 Java Web 服务的响应消息

我尝试将 SoapExtension 添加到我的项目中,该项目使用 Web 引用来调用 Java Web 服务。我所有的代码都在 .Net 4.0 中

我刚刚添加了一个空的 SoapExtension

我在客户的 app.config 中添加了:

我相信上面的代码没有任何改变,当我运行它时,我在方法中抛出了Response is not well-formed XML.一个Root element is missing.异常System.Web.Services.Protocols.SoapClientType.Invoke(我已经打开了 CLR 调试)。如果我删除 app.config 中的配置以绕过 SoapExtension,我可以接收来自服务器的任何返回。

我使用 Fiddler 来跟踪传出和响应消息,我从服务器返回的 SOAP 是

我相信这是一个有效的 SOAP 响应。

这里有什么问题?

0 投票
0 回答
1005 浏览

soapexception - 如何使用 WebService 扩展重试 SOAP 调用(在服务器,而不是客户端)

我开发了一个 SOAP 服务,它可以通过 WAN 访问一个挑剔的后端。我想实现重试逻辑以使消费者应用程序免于实现重试逻辑。

编写重试逻辑的最简洁方法?有一些有趣的想法,但我想避免在数十次调用中使代码复杂化。

我想我需要实现一个 SOAPExtension 来检查 retrySpecific 异常,然后执行内部重试。

P-Code:
SOAP Call Enters WebService
调用后端
如果通过,返回数据
如果失败,调用后端
如果通过,返回数据
如果失败,返回异常

关于如何实现这一点的任何想法?

0 投票
1 回答
15238 浏览

c# - 为什么我的 C# Soap 扩展没有被调用?

我有一个调用 Java Web 服务的 C# Winforms 客户端。服务被正确调用并返回预期结果。

我一直在尝试添加肥皂扩展,直到脸色发青。它编译正确,我有充分的理由相信它正在注册......但它永远不会被调用。我尝试修改 app.config;我尝试调用“wss.SoapExtensionTypes.Add(soapInterceptor)”:同样的事情。我的 SoapException 的“Initalize()”和“ProcessMessage()”函数根本不会被调用。

问:有什么建议吗?有什么调试技巧吗?

ClientTraceExtension.cs =>

应用程序.config =>

Form1.cs =>