모든 SOAP 요청 및 응답을 기록하기위한 SoapExtension이 있습니다. MS Soap Toolkit (OnBase Workflow)을 사용하는 응용 프로그램의 호출에 대해서는 정상적으로 작동합니다. 그러나 html 페이지에서 $ .ajax()가 작성한 호출에는 작동하지 않습니다.ScriptService WebService 요청을 추적하는 방법은 무엇입니까?
[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());
}
}
을 그리고 여기에 SoapExtension 및 SoapExtensionAttribute의 기본은 다음과 같습니다 :
$.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json"
});
그것은 WebService에와 ScriptService에 표시된 ASP.NET 3.5 WebService를 호출의 속성 :
public class LoggingSoapExtension : SoapExtension, IDisposable { /*...*/ }
[AttributeUsage(AttributeTargets.Method)]
public sealed class SoapLogAttribute : SoapExtensionAttribute { /*...*/ }
여기 예입니다
$ .ajax() 요청에서 LoggingSoapExtension을 실행할 수있는 항목이 누락 되었습니까?
업데이트
@ 크리스 Brandsma
당신이 JSON을 요청하는 것은 웹 서비스 (dataType와 "JSON")를 통해 대신 XML의 결과 때문이있을 수 있습니다. 따라서 ScriptService 속성이 활성화되어 있지만 SOAP 메시지를 보내지 않습니다.
왜 SoapExtension이 작동하지 않는지에 대한 답변입니다. ScriptService로 추적을위한 제안? 마음에 오는 유일한 것은 요청을 기록하는 메소드를 제공하는 ScriptService 기본 클래스입니다. 그런 다음 모든 ScriptService WebService의 모든 WebMethod에서이 메서드를 호출해야합니다 (필자는 상당수 있습니다). 가능한 경우 SoapExtension 특성처럼 깨끗하고 단순한 것을 사용하고 싶습니다.
CapturedStream이란 무엇입니까? – Naor
http://stackoverflow.com/questions/386487/capturing-html-generated-from-asp-net/386648#386648의 ResponseCaptureStream과 동일합니다. – jrummell