programing

ASMX 파일에서 JSON을 출력하는 방법

sourcejob 2023. 2. 28. 23:27
반응형

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" };
    }
}

XML로 압축되지 않고 순수 JSON 스트링을 수신하려면 JSON 스트링을 직접 에 써야 합니다.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}");
        }
    }

WebService에서 ResponseFormat이 JSON으로 설정된 경우에도 XML을 반환합니다.

요구가 GET이 아닌 POST 요구임을 확인합니다.Scott Guthrie가 이유를 설명하는 글을 올렸습니다.

jQuery 전용으로 작성되어 있지만, 다음과 같은 경우에도 도움이 될 수 있습니다.
jQuery를 사용하여 ASP를 소비합니다.NET JSON 웹 서비스

지금은 오래된 소식일 수도 있지만, 마법은 다음과 같습니다.

  • 웹 서비스 클래스의 [ScriptService] 속성
  • [ScriptMethod(UseHttpGet) = true, ResponseFormat = ResponseFormat.Json)] 메서드
  • 콘텐츠 유형: 요청 중인 응용 프로그램/json

이러한 부품이 배치되어 있으면 GET 요청이 성공합니다.

HTTP POST의 경우

  • [ScriptMethod(UseHttpGet) = false, ResponseFormat = ResponseFormat.Json)] 메서드

클라이언트 측(Web 메서드가 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 를 사용하고, 정적 메서드를 asmx 파일로 이행하는 경우는, 정적 메서드가 될 수 없습니다.

또한 JSON을 통화에서 되돌리려면 웹 서비스 Content-Type: application/json에 알려야 합니다(jQuery를 사용하고 있습니다.jQuery를 사용할 때 회피해야 할 3가지 실수 기사는 매우 유익했습니다.여기 다른 답변에 나와 있는 것과 같은 웹사이트에서 나온 것입니다).

웹 서비스를 클라이언트 스크립트에서 호출하시겠습니까, 아니면 서버 측에서 호출하시겠습니까?

컨텐츠 타입의 헤더를 서버에 송신하는 것이 도움이 되는 경우가 있습니다.

'어플리케이션/json; charset=utf-8'

클라이언트 측에서는 클라이언트 측 라이브러리의 프로토타입을 사용하고 있으며, 컨텐츠가 있습니다.이를 지정할 수 있는 Ajax 콜을 발신할 때 파라미터를 입력합니다.jQuery가 J를 잡은 것 같아SON 방식

다른 방법:범용 HTTP 핸들러(.ashx)를 사용하고 마음에 드는 json 라이브러리를 사용하여 수동으로 JSON을 직렬화하고 직렬화를 해제합니다.

요청 처리와 응답 생성에 대한 완벽한 제어가 다른 어떤 것보다 우선한다는 것을 알게 되었습니다.NET은 심플하고 RESTFul한 웹 서비스를 제공합니다.

언급URL : https://stackoverflow.com/questions/211348/how-to-let-an-asmx-file-output-json

반응형