[참고 : 여기서 좋은 디버깅 기술을 찾고 있습니다. 아마도 내가 모르는 것을 단순화하는 몇 가지 트릭이나 방법]ASP.Net에서 더 나은 오류 메시지 받기 [WebMethod] JQuery에서 호출되었습니다.
here 및 here과 같이 JQuery의 ASPX 페이지에 정의 된 [WebMethods]를 호출하는 기술을 사용하고 있습니다. 그것은 점점 더 보편적 인 방법으로 보인다.
저는 잠시 동안 사용 해왔고, 일반적으로 잘 작동합니다. 그러나 그것을 개발하는 동안 꽤 허약합니다. 매개 변수가 올바르지 않으면 실제로 모호하고 특이하지 않은 오류 메시지가 표시됩니다.
[WebMethod]
public static string SaveComplexRecord(int recID, GeneralData general, SomeObject data, SomeOtherObject moreData)
{
//do a bunch of stuff with that data
}
그리고 GeneralData, SomeObject의, 그리고 SomeOtherObject 모든 매개 변수의 다양한 유형의 혼합이 매우이다 : 나는 상당히 복잡한 웹 방법이있는 경우로 예를 들어, 정의 (문자열의 int, bools, 날짜 시간을.) 특히 초기 개발 중에 클라이언트 측에 JSON을 잘못 빌드 할 가능성이 있습니다. 아마도 나는이 작업을 수행합니다 세 번째 매개 변수의 이름, moredata moreData하지 않기 때문에 오류가 발생합니다
var data = {
recID: curID,
general:
{
a: aValue,
b: bValue,
c: cValue
},
data:
{
d: dValue,
e: eValue,
f: fValue
},
moredata:
{
g: gValue,
h: hValue,
i: iValue
}
};
합니다. 그리고 그것은 단지 하나의 예일뿐입니다. 수백 가지의 미묘한 오타 스타일 오류가있을 수 있습니다.
C에서이 메서드를 호출하면 컴파일러에서 "SaveComplexRecord의 오버로드 된 메서드는 세 개의 매개 변수를 사용하지 않습니다."와 같은 오류 메시지를 표시합니다. 또는 올바른 방향으로 당신을 가리키는 다른 유용한 메시지.
그래서 ... 더 나은 오류 메시지를 생성하기 위해 ASP.Net을 얻는 방법이 있습니까?
[WebMethod] 호출의 JSON 매개 변수 구조를 자동으로 빌드하는 유틸리티가 있습니까? (마치 웹 서비스의 WSDL을 자동으로 가져올 수있는 것처럼)
... 또는 내가 누락되었을 수있는 다른 기술은 무엇입니까? 당신이 컴파일 타임 오류를 얻을 수 있도록
var jsondata = $.toJSON(data);
$.ajax({
type: "POST",
url: "MyWebPage.aspx/SaveComplexRecord",
data: jsondata,
contentType: "application/json; charset=utf-8",
dataType: "json",
beforeSend: function(xhr)
{
xhr.setRequestHeader("Content-type",
"application/json; charset=utf-8");
},
success: function(msg)
{
//do something on success
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert("ERROR status:" + textStatus + " error:" + errorThrown);
}
});
다소 관련이 없지만 $ .toJSON 대신 JSON.stringify를 사용하는 것이 좋습니다. 최신 브라우저에서 JSON.stringify는 JavaScript 엔진을 통해 직렬화하는 대신 브라우저 고유의 빠른 기능을 자동으로 활용합니다. –
차가움. 그 사실을 모르고있었습니다. –