programing

오류 수정 방법:서버에서 받은 메시지를 구문 분석할 수 없습니다.

batch 2023. 8. 24. 21:54
반응형

오류 수정 방법:서버에서 받은 메시지를 구문 분석할 수 없습니다.

AJAX를 사용하는 Sharepoint 솔루션이 있습니다.이것을 트리거하는 버튼은 업데이트 패널 안에 있습니다.

우리가 하는 일 중 하나는 MS Word 문서를 생성하는 것입니다. 이 문서는 인쇄할 수 있도록 클라이언트에서 열립니다.

클라이언트에 문서를 보내는 코드는 다음과 같습니다.

    void OpenFileInWord(byte[] data)
    {
        Response.Clear();
        Response.AddHeader("Content-Type", "application/msword");
        Response.BinaryWrite(data);
        Response.Flush();
        Response.End();
    }

오류는 다음과 같습니다.

Message: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled. Details: Error parsing near '<?mso-application pr'.

문서를 먼저 Sharepoint에 저장한 다음 Sharepoint에서 열 수 있지만 이 작업은 수행하지 않는 것이 좋습니다.

업데이트 패널 내부에 버튼이 있으면 이로 인해 발생할 수 있습니다. 버튼을 이동하지 않으려면 업데이트 패널에 버튼에 대한 트리거, 즉 포스트백 트리거를 추가하십시오.

이 코드를 실행하는 작업은 AJAX 호출이 아닌 포스트백 이벤트여야 합니다.

이는 AJAX 요청이 처리되는 방식의 특성 때문입니다.

버튼을 업데이트 패널 밖으로 유지합니다.그러면 작동이 잘 됩니다.

다음과 같이 전체 포스트백이 발생하도록 버튼을 설정합니다.

 <Triggers>
<asp:PostBackTrigger ControlID="PrintButton" />
</Triggers>

다음과 같이 페이지 로드에 스크립트 관리자를 추가해 보십시오.

((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport);

단추를 클릭하면 이러한 유형의 작업을 수행할 수 있는 파일을 스트리밍할 수 있는 다른 페이지로 리디렉션됩니다.많은 사이트에서 document.aspx 페이지를 사용한 다음 쿼리 문자열을 통해 문서 ID를 전달하고 거기서 파일을 스트리밍합니다.

이 예에서는 이미 표시된 페이지의 머리글을 허용되지 않는 경우 기본적으로 변경하려고 합니다.

그리드 보기의 템플릿 열에 중복된 컨트롤 ID가 있는 것이 문제였습니다.제가 컨트롤의 이름을 고유한 그리드 폭으로 바꾸자 문제가 사라졌습니다.

나는 아스피린을 먹었습니다.asp 내부의 테이블 컨트롤:업데이트 패널 컨트롤.테이블에 정적 행이 몇 개 있고 포스트백 이벤트 중에 일부 행이 추가되었습니다.

테이블의 행과 열에 정적 ID가 없기 때문에 이 오류가 발생했습니다.따라서 각 포스트백에서 ID가 변경되어 테이블의 ViewState를 복원하는 데 문제가 발생합니다.

이 오류를 중지하기 위해 테이블에 대해 ViewState를 비활성화했습니다.EnableViewState="false"

<asp:Table ID="PageContentTable" runat="server" ... EnableViewState="false">

버튼 주변의 업데이트 패널을 제거했더니 정상적으로 작동했습니다.

저는 몇 시간 동안 이것과 씨름해 왔습니다.웹 양식 내에서 Ajax 요청 수행Code-Behind 파일을 하지 않았습니다.UpdatePanel결과적으로 성가신 오류가 발생했고 저는 해결책을 찾을 수 없었습니다.마침내 저는 효과적인 해결책을 찾았습니다!

  • 에 프젝트의어생다성다니합을음서에를 ..ashx(일반 처리기) 파일입니다. 서비스 내에 내 그래서: 최상었위서내만것들습다니을에내더.Services\EventsHandler.ashx당신이 이것을 할 때 당신은 둘 다와 함께 끝나야 합니다..ashx&.ashx.csjava.
  • 내부ashx.cs 수 있는 찾을있파일는수.ProcessRequest모든 코드를 넣을 수 있는 방법.
  • Javascript 파일에서 다음과 유사한 작업을 수행하는 이 메서드를 호출할 수 있습니다.

    $('#MyButton').click(function () {
        var zipCode = $('#FBZipBox').val();
    
        $.getJSON('/Services/EventsHandler.ashx?zip=' + zipCode, function (data) {
            var items = [];
            $.each(data.Results, function (key, item) {
            items.push('<span>item.Date</span>');
        });
    }).complete(function () {
        // More Logic
    });
    return false;});
    
  • 의 용자 ashx.cs파일 다음을 사용하여 쿼리 매개 변수에 액세스할 수 있습니다.

    var 범주 = 컨텍스트입니다.부탁한다.QueryString["zipCode"];

  • 그런 다음 다음을 사용하여 결과를 반환할 수 있습니다.

    맥락.대답.쓰기(응답 문자열);

언급URL : https://stackoverflow.com/questions/1554728/how-to-fix-error-the-message-received-from-the-server-could-not-be-parsed

반응형