C#-服务器端WebMethod将大字节[]作为null返回给客户端

C#-服务器端WebMethod将大字节[]作为null返回给客户端,c#,asp.net,webmethod,pagemethods,maxrequestlength,C#,Asp.net,Webmethod,Pagemethods,Maxrequestlength,我有一个服务器端ASP.NET WebMethod(System.Web.Services.WebMethod)。它是通过JavaScript从客户端调用的。它使用System.Net.WebClient通过其URL下载SSRS报告,将报告转换为字节数组并将其传递回客户端。对于高达11089998字节的报告来说,这很好,但是超过该值的任何内容(比如11089999字节)都会向JavaScript返回空值。我需要返回一个11711字节的报告,可能会增加,但最多不会超过13MB 在Web.confi

我有一个服务器端ASP.NET WebMethod(System.Web.Services.WebMethod)。它是通过JavaScript从客户端调用的。它使用System.Net.WebClient通过其URL下载SSRS报告,将报告转换为字节数组并将其传递回客户端。对于高达11089998字节的报告来说,这很好,但是超过该值的任何内容(比如11089999字节)都会向JavaScript返回空值。我需要返回一个11711字节的报告,可能会增加,但最多不会超过13MB

在Web.config中,我有:

<system.web>
    <httpRuntime targetFramework="4.5" maxRequestLength="2097151" executionTimeout="3600"/>
</system.web>

<system.web.extensions>
  <scripting>
      <webServices>
          <jsonSerialization maxJsonLength="2147483647" />
      </webServices>
  </scripting>
</system.web.extensions>
下面是JavaScript PageMethod调用和回调:

 PageMethods.DownloadReport(opt, type, arg, DownloadReportCallback, ReportErrors);

 function DownloadReportCallback(results) {
    var bytes = new Uint16Array(results.length);
    for (var i = 0; i < results.length; i++) {
        bytes[i] = results[i];
    }
    var file = new Blob([bytes], { type: mime });
    // For IE10+
    if (window.navigator.msSaveOrOpenBlob) {
        window.navigator.msSaveOrOpenBlob(file, name);
    }
    // For other browsers.    
    else {
        var a = document.createElement("a"),
        url = URL.createObjectURL(file);
        a.href = url;
        a.download = name;
        document.body.appendChild(a);
        a.click();
        setTimeout(function () {
            document.body.removeChild(a);
            window.URL.revokeObjectURL(url);
        }, 0);
     }
  }
PageMethods.DownloadReport(opt、type、arg、DownloadReportCallback、ReportErrors);
函数DownloadReportCallback(结果){
var字节=新的UINT16数组(results.length);
对于(var i=0;i

我已经尝试了很多次,但对于大于11089998字节的报告,我似乎无法实现这一点。有人有什么想法吗?谢谢您的时间。

我遇到过网络配置不起作用的实例,我需要在方法中的序列化程序上设置它

JavaScriptSerializer serializer = new JavaScriptSerializer();

serializer.MaxJsonLength = Int32.MaxValue; 

return serializer.Serialize(response);

我曾经有过webconfig不起作用的实例,我需要在方法中的序列化程序上设置它

JavaScriptSerializer serializer = new JavaScriptSerializer();

serializer.MaxJsonLength = Int32.MaxValue; 

return serializer.Serialize(response);

成功了。非常感谢,我很感激。我很想提高一下,但我的名声显然不够好。没问题,很高兴能帮上忙。非常感谢,我很感激。我想把它弄大,但我的名声显然不够好。没问题,很乐意帮忙