Ho una SoapExtension che ha lo scopo di registrare tutte le richieste e le risposte SOAP. Funziona perfettamente per le chiamate da un'applicazione che utilizza MS Soap Toolkit (flusso di lavoro OnBase). Ma non funziona per le chiamate fatte da $ .ajax() su una pagina html. Ecco un esempio:Come rintracciare le richieste di WebService di ScriptService?
$.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json"
});
Si sta chiamando un ASP.NET 3.5 WebService contrassegnati con WebService e ScriptService attributi:
[WebService(Namespace = XmlSerializationService.DefaultNamespace)]
[ScriptService]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class DepartmentAssigneeService : WebService
{
private readonly DepartmentAssigneeController _controller = new DepartmentAssigneeController();
/// <summary>
/// Fetches the role items.
/// </summary>
/// <returns></returns>
[WebMethod]
[SoapLog]
public ListItem[] FetchDepartmentItems()
{
return CreateListItems(_controller.FetchDepartments());
}
}
E qui ci sono le basi per l'estensione SOAP e SoapExtensionAttribute:
public class LoggingSoapExtension : SoapExtension, IDisposable { /*...*/ }
[AttributeUsage(AttributeTargets.Method)]
public sealed class SoapLogAttribute : SoapExtensionAttribute { /*...*/ }
Mi manca qualcosa che consenta a LoggingSoapExtension di essere eseguito su richieste $ .ajax()?
Aggiornamento
@ Chris Brandsma
Potrebbe essere perché si richiede JSON risultati invece di XML tramite il servizio web (dataType: "json"). Pertanto, l'attributo ScriptService è in fase di attivazione, ma non si inviano messaggi SOAP.
Questo spiega perché SoapExtension non funziona. Qualche suggerimento per tracciare con ScriptService? L'unica cosa che viene in mente è una classe base di ScriptService che fornisce un metodo per registrare una richiesta. Ma poi dovrei chiamare quel metodo in ogni WebMethod in ogni WebService di ScriptService (ne ho parecchi). Mi piacerebbe usare qualcosa di pulito e semplice come un attributo SoapExtension, se possibile.
Che cos'è CapturedStream? – Naor
È lo stesso di ResponseCaptureStream in http://stackoverflow.com/questions/386487/capturing-html-generated-from-asp-net/386648#386648 – jrummell