Mam SoapExtension, który jest przeznaczony do rejestrowania wszystkich żądań i odpowiedzi SOAP. Działa dobrze w przypadku wywołań z aplikacji przy użyciu pakietu MS Soap Toolkit (OnBase Workflow). Ale nie działa w przypadku wywołań $ .ajax() na stronie html. Oto przykład:Jak śledzić żądania usługi WebService ScriptService?
$.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json"
});
To wywołanie ASP.NET 3.5 WebService oznaczone WebService i ScriptService atrybuty:
[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());
}
}
A oto podstawy dla SoapExtension i SoapExtensionAttribute:
public class LoggingSoapExtension : SoapExtension, IDisposable { /*...*/ }
[AttributeUsage(AttributeTargets.Method)]
public sealed class SoapLogAttribute : SoapExtensionAttribute { /*...*/ }
Czy brakuje mi czegoś, co pozwoliłoby wykonać LoggingSoapExtension na żądanie $ .ajax()?
Aktualizacja
@Chris Brandsma
Być może dlatego, że zainteresowanie wynika JSON, zamiast XML za pośrednictwem usługi internetowej (dataType: "json"). Tak więc atrybut ScriptService jest aktywowany, ale nie wysyłasz wiadomości SOAP.
To odpowiada, dlaczego SoapExtension nie działa. Wszelkie sugestie dotyczące śledzenia za pomocą usługi ScriptService? Jedyną rzeczą, która przychodzi do głowy jest klasa bazowa ScriptService, która udostępnia metodę rejestrowania żądania. Ale wtedy musiałbym wywołać tę metodę w każdym WebMethod w każdej WebService usługi ScriptService (mam ich sporo). Chciałbym użyć czegoś tak czystego i prostego jak atrybut SoapExtension, jeśli to możliwe.
Co to jest CapturedStream? – Naor
jego samego jako ResponseCaptureStream w http://stackoverflow.com/questions/386487/capturing-html-generated-from-asp-net/386648#386648 – jrummell