Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通用处理程序参数大小限制?_C#_Javascript_Asp.net_Post_Ashx - Fatal编程技术网

C# 通用处理程序参数大小限制?

C# 通用处理程序参数大小限制?,c#,javascript,asp.net,post,ashx,C#,Javascript,Asp.net,Post,Ashx,我有一些JavaScript代码,它生成了一个很长的脚本,然后将它发回服务器到一个通用处理程序以创建csv 我发送数据的JavaScript代码是: function postwith(to, p) { var myForm = document.createElement("form"); myForm.method = "post"; myForm.action = to; for (var k in p) { var myInput = document.createElement

我有一些JavaScript代码,它生成了一个很长的脚本,然后将它发回服务器到一个通用处理程序以创建csv

我发送数据的JavaScript代码是:

function postwith(to, p) {
var myForm = document.createElement("form");
myForm.method = "post";
myForm.action = to;
for (var k in p) {
    var myInput = document.createElement("input");
    myInput.setAttribute("name", k);
    myInput.setAttribute("value", p[k]);
    console.log(k+":"+p[k]);
    myForm.appendChild(myInput);
}
document.body.appendChild(myForm);
myForm.submit();
document.body.removeChild(myForm);
}

在我的控制台中,我可以看到整个字符串被添加到表单(“console.log(k+”:“+p[k]);”,因此客户端似乎工作正常

在我检查请求/响应的网络视图中,我可以看到“内容”(表单数据属性的名称)还不完整——它在中间被剪切。

服务器端非常简单-以csv形式发回内容:

public class Excel : IHttpHandler {

public void ProcessRequest (HttpContext context) {

    context.Response.ContentType = "text/csv";
    context.Response.AddHeader("Content-Disposition", "attachment; filename=" + context.Request["Report"] +System.DateTime.Now.Ticks+ ".csv");
    string content = context.Request["Content"];
    content = content.Replace(";", System.Environment.NewLine);
    System.Text.UTF8Encoding uc = new System.Text.UTF8Encoding(true);
    context.Response.Output.WriteLine(content);
    context.Response.End(); 
}

public bool IsReusable {
    get {
        return false;
    }
}
}


我猜服务器需要以某种方式配置以允许更大的帖子…

您可以在web.config中设置允许的最大内容长度。默认值为30000000字节:

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="[maxLengthInBytes]" />
    </requestFiltering>
  </security>
  ...
</system.webServer>

...

多长是“很长”?我得到的csv是515KB,包括传输的部分。我想实际大小应该是1MB左右。添加maxAllowedContentLength=“4294967295”没有区别您的请求的长度和修剪内容的长度是多少?csv是515KB,因此这是到达服务器的大小,大约是原始请求大小的1/2。(所以它没有那么大…)您是否查看过正在发布的实际请求?或者尝试过手动发布,例如使用Fiddler?只是为了确保这是服务器端问题。问题是服务器没有抛出任何错误。我在chrome中看到客户端拥有整个字符串(使用console.log)但是在网络选项卡中,我看到请求有一个部分字符串被发送到服务器。我也会尝试fiddler,看看是否有新的内容出现。