Ho creato una classe SoapExtension per acquisire la richiesta e la risposta di soap da chiamate di servizi Web specifiche. Per mettere in pratica questo SoapExtension, devo aggiungere un attributo al metodo nel client proxy generato.Come aggiungere l'attributo SoapExtension al proxy client del servizio Web generato senza modificare la classe generata?
Per esempio, ho aggiunto l'attributo AuditSoapCapture a questo metodo:
[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]));
}
Sto cercando un modo per aggiungere questo attributo a metodi specifici senza modificare il proxy client generato, in quanto saranno perdersi quando ci rigeneriamo. Posso farlo in un'altra classe o interfaccia parziale o in un altro modo?
Grazie!
tenta di utilizzare l'infrastruttura [SchemaImporterExtension] (http://msdn.microsoft.com/en-us/library/system.xml.serialization.advanced.schemaimporterextension.aspx) chiamando wsdl.exe con l'opzione '/ parameters' (http://msdn.microsoft.com/en-us/library/7h3ystb6.aspx) – Lu55