问题标签 [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 回答
361 浏览

c# - 在c#中调用soap服务时如何为服务管理器类添加委托类?

首先,我想分享我想要构建的场景 -
场景: 我正在使用 wpf 构建客户端应用程序。在某些情况下,我需要调用 Web 服务来从服务器获取数据。为了做到这一点,我使用 wsld url 添加了一个 Web 引用。我创建了一个调用服务方法的 ServiceManager 类。出于安全原因,我需要在soap xml 请求中添加一些标头信息,例如,UserToken、SAML Token 等。我可以从我的 ServiceManager 课程中做到这一点。但是我想添加另一个在向服务器发送请求之前将被调用的类。在该类中,我将执行一些操作,例如将安全标头添加到带有请求的soap xml 请求中,然后将其发送到服务器。

我使用 SOAP Extension 来实现我的目的,它运行良好。但问题是,每次我需要在服务方法顶部的 Reference.cs(对于每个 Web 服务引用)文件中添加注释。我相信还有一些其他最简单的方法可以使它比 SOAP Extension 更好地工作。有什么方法我只能调用服务并且会自动调用委托类并且我不需要向参考文件添加任何注释?我将在这里分享我的示例代码。

服务管理类:

参考.cs

TraceExtensionAttribute.cs

TraceExtension.cs

0 投票
2 回答
1119 浏览

c# - ASMX Web 服务:如何从我喜欢从客户端捕获的 asmx 服务中抛出肥皂异常

我想如果客户端发送错误的凭据然后服务抛出肥皂异常,但我尝试但仍然没有运气。

从这里查看我的更新代码https://github.com/karlosRivera/EncryptDecryptASMX

任何人都可以下载我的代码并在他们的 PC 上运行以捕获问题。

看到这个区域

对于这条线throw new SoapException("Unauthorized", SoapException.ClientFaultCode);

我从我的 soapextension 进程消息函数中看到的响应 XML 正文没有发生变化。

所以我现在有两个问题

1)我想throw SoapException从需要更改肥皂响应的服务中获得。

2)从客户端我需要赶上SoapException

请从链接中查看我的最新代码并告诉我要更改的内容。谢谢

0 投票
2 回答
1300 浏览

c# - Web.config 中的 SoapExtension System.Configuration.ConfigurationErrorsException 无法解析属性“type”的值

我对 SoapExtension 的配置有问题(与实现无关)。首先,我已经阅读了所有这些与 SoapExtensions 有某种关联的帖子(其中包括):

  1. 在客户端拦截来自和发往 Web 服务的 SOAP 消息
  2. https://www.codeproject.com/Articles/34381/Efficient-Tracing-Using-SOAP-Extensions-in-NET
  3. https://social.msdn.microsoft.com/Forums/en-US/d8d6fe09-74be-4210-91bb-a8924a742e8c/how-to-log-soap-message-which-is-going-out-of-my-网络应用程序?论坛=ncl
  4. http://www.seanmcilvenna.com/2010/08/20/logging-full-soap-messages/
  5. 如何创建 web.config 文件以加载 SoapExtension?
  6. 在 WCF 客户端中拦截消息
  7. https://msdn.microsoft.com/en-us/library/esw638yk(VS.85).aspx
  8. https://social.msdn.microsoft.com/Forums/en-US/1ba267b8-c08d-4c30-a1e1-792bac92fc87/soapextension-does-not-work-in-client-side?forum=netfxnetcom
  9. SoapExtension 未加载

场景如下:

  • 我正在从库(dll)项目中使用第 3 方 WS(SOAP):connectors.dll

  • 在这个项目中,我有一个对第 3 方 WS(SOAP) 的网络引用。我使用 VS 生成了代理(添加了 Web 引用,并指向 wsdl)。

  • 另一方面,我有一个 Web 应用程序(实际上是一个 REST 服务),它引用了 connector.dll 的一个类(我们可以称之为 Connector-A)

(直到这里,我通过我的 REST-Service webapp 调用了一个休息服务,调用了连接器-A,这对 3rdParty 的代理服务进行了最后一次调用。我收到了一个响应,但它的字符无效(位置为 0x1F 1),这就是为什么我试图使用 SoapExtension -> 在反序列化发生之前将其删除)

最后一步,配置: * 在我的 REST-Service (webapp) 中添加一个引用 (VS->Add Reference) 到 Backend.SoapExtnsions.dll 和

  • 在 web.config 中注册soapExtension:

`

`

当我调用一个休息服务时,它最后调用了 WS-Soap,我现在得到了一个运行时异常,这让我抓狂:

The value of the property 'type' cannot be parsed. The error is: Could not load type 'Offidesk.Backend.SoapExtensions.XmlCleanupSoapExtension' from assembly 'Offidesk.Backend.SoapExtensions'.

我想我已经为这条线尝试了所有可能的组合:

<add type="Backend.SoapExtensions.XmlCleanupSoapExtension, Backend.SoapExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=66269ab3fc862c8f" priority="1" group="0" />

  • 有和没有程序集名称
  • 有和没有命名空间
  • 有和没有版本、文化和 PublicToken
  • 组=“0”和组=“高”

实际上,我对这个运行时异常感到非常沮丧。我虽然可能块内部的位置可能会影响,但我所有的尝试都得到了同样的例外......

任何想法??

提前致谢。

注意:我还尝试了其他技术来清理覆盖 SoapHttpClientProtocol(在扩展类中)方法的服务器响应:GetReaderForMessage,但对我也不起作用(不知道为什么)。

编辑

最后,无效字符 0x1F 的问题并非如此。我没有意识到响应是用 gzip 压缩的,并且代理客户端试图将压缩响应解析为 XML,这显然在运行时引发了异常。

但是,我很想知道为什么我的 web.config 和soap 扩展不起作用(迟早我们会需要这个配置......所以最好防止)。