ProgramingTip

ASMX 파일이 JSON을 출력하도록하는 방법

bestdevel 2020. 11. 27. 21:05
반응형

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

반응형