- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我创建了一个 SoapExtension 类来捕获来自特定 Web 服务调用的 soap 请求和响应。为了使这个 SoapExtension 生效,我必须向生成的代理客户端中的方法添加一个属性。
例如,我已将 AuditSoapCapture 属性添加到此方法:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://blahblah.com/webservices/AddressSearch", RequestNamespace = "http://blahblah.com/webservices/", ResponseNamespace = "http://blahblah.com/webservices/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[blahblah.TriadLite.Core.AuditSoapCapture]
public System.Data.DataSet AddressSearch(string HouseNumber, string StreetName, string ZipCode) {
object[] results = this.Invoke("AddressSearch", new object[] {
HouseNumber,
StreetName,
ZipCode});
return ((System.Data.DataSet)(results[0]));
}
我正在寻找一种将此属性添加到特定方法的方法,而无需修改生成的客户端代理,因为它们会在我们重新生成时丢失。我可以在另一个部分类或接口(interface)或其他方式中执行此操作吗?
谢谢!
最佳答案
不幸的是,您需要修改代理代码。您提到的其他可能性将不起作用 - parial 类不会覆盖现有功能,而且我不知道如何让接口(interface)执行您需要的操作(事实上什至没有办法让代理生成器知道您打算实现一个接口(interface))。
我过去做过的事情是,在您可以访问 web 服务源的情况下,编写一个小应用程序来解析 .asmx.cs 文件中的代码(作为文本) Web 服务提取所有标记有 [WebMethod] 的方法的名称。然后,应用程序根据某些设置文件或类似文件,通过将适当的属性插入代理方法来“修复” References.cs。这很有效,因为代理中的命名约定非常巧妙地映射到原始服务中的方法名称。
关于c# - 如何在不修改生成的类的情况下将 SoapExtension 属性添加到生成的 Web 服务客户端代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640505/
我正在尝试编写 soap 扩展。但是框架没有加载它。 我已经添加到 web.config 即使我将类型更改为一些废话它也不会抛出异常。 最佳答案 我一直遇到类
背景:我正在尝试编写一个简单的 SoapExtension 类来记录来自 asmx Web 服务的入站/出站 Soap 消息。正在关注this article on msdn ,我已经能够使事情正常进
我有一个派生自 SoapExtension 的类。要进行单元测试,例如 ProcessMessage(SoapMessage) 方法,我需要输入一个 SoapMessage,它是一个抽象类。当我尝试这
我有一些 Web 方法,用于调用一些外部服务(例如 Google Calendar API),显然这些方法可能非常脆弱。 不幸的是,我现在意识到,在这些方法上引发的任何错误都不会导致异常冒泡到 Glo
我创建了一个 SoapExtension 类来捕获来自特定 Web 服务调用的 soap 请求和响应。为了使这个 SoapExtension 生效,我必须向生成的代理客户端中的方法添加一个属性。 例如
我需要使用一个SoapExtension 子类(我已经创建),但似乎只能通过一个web.config 文件来初始化这个类。我已经读到它应该可以通过 app.config 文件实现,但我不知道该怎么做。
我在配置 SoapExtension 时遇到问题(而不是在实现方面)。首先,我已经阅读了所有这些帖子(以及其他帖子),它们在某种程度上与 SoapExtensions 相关: Intercept SO
我是一名优秀的程序员,十分优秀!