J'ai créé une classe SoapExtension pour capturer la demande de savon et la réponse d'appels de service Web spécifiques. Afin de mettre en place cette extension SoapExtension, je dois ajouter un attribut à la méthode dans le client proxy généré.Comment ajouter l'attribut SoapExtension au proxy client du service Web généré sans modifier la classe générée?
Par exemple, j'ai ajouté l'attribut AuditSoapCapture à cette méthode:
[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]));
}
Je cherche un moyen d'ajouter cet attribut à des méthodes spécifiques sans modifier le proxy client généré, car ils seront perdus quand nous nous régénérons. Puis-je le faire dans une autre classe ou interface partielle ou d'une autre manière?
Merci!
Essayez d'utiliser [SchemaImporterExtension] (http://msdn.microsoft.com/en-us/library/system.xml.serialization.advanced.schemaimporterextension.aspx) infrastructure en appelant wsdl.exe avec l'option '/ parameters' (http://msdn.microsoft.com/en-us/library/7h3ystb6.aspx) – Lu55