ASMX 파일이 JSON을 출력하도록하는 방법
파일 내부 코드가있는 ASMX 파일을 만들었습니다. 잘 작동하지만 XML을 출력하고 있습니다.
그러나 JSON은 비용이 많이 든다. ResponseFormat 구성이 작동하지 않는 것입니다. 내 코드 숨김은 다음과 가변됩니다.
[System.Web.Script.Services.ScriptService]
public class _default : System.Web.Services.WebService {
[WebMethod]
[ScriptMethod(UseHttpGet = true,ResponseFormat = ResponseFormat.Json)]
public string[] UserDetails()
{
return new string[] { "abc", "def" };
}
}
WebService 에서 ResponseFormat이 JSON으로 경우에도 XML을 반환합니다 .
요청이 GET이 아닌 POST 요청인지 확인하십시오. Scott Guthrie는 그 이유를 설명 하는 게시물을 가지고 있습니다.
jQuery 용으로 특별히 작성 유용 할 수도 있습니다.
jQuery를 사용하여 ASP.NET JSON 웹 서비스 사용
순수한 JSON 수신을 XML로 래핑하지 않고 수신 수신 거부를 위해 직접 작성 HttpResponse
하고 WebMethod
반환 유형을 void
.
[System.Web.Script.Services.ScriptService]
public class WebServiceClass : System.Web.Services.WebService {
[WebMethod]
public void WebMethodName()
{
HttpContext.Current.Response.Write("{property: value}");
}
}
이것은 아마도 지금 오래된 뉴스 일 것입니다. 그러나 마법은 다음과 달라집니다.
- 웹 서비스 클래스의 [ScriptService] 속성
- [ScriptMethod (UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] 메서드에서
- 콘텐츠 유형 : 요청 된 신청 / json
우선 부분이 제자리에 있으면 GET 요청이 성공합니다.
HTTP POST의 경우
- 메서드의 [ScriptMethod (UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
그리고 클라이언트 측에서 (웹 메소드가 MethodName이라고 가정하고 searchString이라는 단일 변수를 사용 가정) :
$.ajax({
url: "MyWebService.asmx/MethodName",
type: "POST",
contentType: "application/json",
data: JSON.stringify({ searchString: q }),
success: function (response) {
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus + ": " + jqXHR.responseText);
}
});
(기본적으로 Google에서 4 시간을 소비 함)을 배웠습니다. ASPX 파일에서 PageMethods를 사용하여 정적 메서드에 대해 JSON ([ScriptMethod ()] 마커 포함)을 반환 할 수있는 경우 이동하기로 결정한 경우 메소드를 asmx 파일에 추가하는 경우 메소드를 사용할 수 없습니다.
또한 호출에서 JSON을 되찾기 위해 웹 서비스 Content-Type : application / json에 알려야합니다 (jQuery를 사용하고 jQuery를 사용할 때 피해야 할 3 가지 실수 기사는 매우 계몽 적. 여기에 다른 답변에서 언급).
클라이언트 배포 또는 서버 측에서 웹 서비스를 호출하고 있습니까?
콘텐츠 유형 헤더를 서버에 위쪽으로 도움이 될 수 있습니다.
'응용 프로그램 / json; 문자셋 = utf-8 '
클라이언트 측에서는 클라이언트 측 라이브러리를 사용하며이를 수 있습니다. Ajax 호출을 사용할 때 contentType 클라이언트 변수가 있습니다. jQuery에 getJSON 메소드가 검증 생각합니다.
대안 : 일반 HTTP를 사용하고 선호하는 json 라이브러리를 사용하여 수동 JSON을 사용하여 생성 화합니다.
요청 처리 및 응답 생성에 대한 완전한 제어가 .NET이 단순하고 RESTful 웹 서비스를 위해 제공하는 다른 어떤 것보다 우월함을 발견했습니다.
참고 URL : https://stackoverflow.com/questions/211348/how-to-let-an-asmx-file-output-json
'ProgramingTip' 카테고리의 다른 글
웹킷 스크롤바 스타일을 지정된 요소에 적용 (0) | 2020.11.27 |
---|---|
D3 SVG 등록에 텍스트 추가 (0) | 2020.11.27 |
벡터 또는지도, 어느 것을 사용할까요? (0) | 2020.11.27 |
jQuery : 복수를 검색하는 선택을 포함합니다. (0) | 2020.11.27 |
대신에 바이트로 작동하는 StringIO 대체? (0) | 2020.11.27 |