C# 在很长的Json字符串上使用Context.Response.Write()的正确方法

C# 在很长的Json字符串上使用Context.Response.Write()的正确方法,c#,asp.net,json,ashx,C#,Asp.net,Json,Ashx,我将iis和asp.net与c#一起使用 我有一个使用JavaScriptSerializer构建的JSON字符串,MaxJsonLength设置为Int32.MaxValue,现在我想使用response.write返回这个字符串,就像这个response.write(myJsonString)一样,但我想知道这是返回它的正确方法吗?如果字符串很长(也可能包含巨大的base64编码字节),如果它仍然在int32.maxvalue长度内,那么IIS本身是否有任何限制(如我可以返回的最大长度)?或

我将iis和asp.net与c#一起使用

我有一个使用JavaScriptSerializer构建的JSON字符串,MaxJsonLength设置为Int32.MaxValue,现在我想使用response.write返回这个字符串,就像这个response.write(myJsonString)一样,但我想知道这是返回它的正确方法吗?如果字符串很长(也可能包含巨大的base64编码字节),如果它仍然在int32.maxvalue长度内,那么IIS本身是否有任何限制(如我可以返回的最大长度)?或者我应该写一个循环来逐个字符地发送字符串,并每隔x个字符刷新一次响应吗

顺便提一下,我是否应该在
响应的前面添加一个UTF8 BOM。写入
以确保我可以正确使用接收方端的JSON字符串?如果JSON字符串包含base64编码字节,是否有任何含义

现在我想用response.write返回这个,如下所示 Write(myJsonString),但我想知道这是正确的吗 怎么还呢

<>而不是使用JavaCurrPixSerialServer类,您可以考虑使用或内置,这两种方法都允许您直接序列化到输出流:

var serializer = new JsonSerializer();
serializer.Serialize(context.Response.Output, objectToSerialize);
这样,您就不需要在内存中加载整个JSON字符串

如果字符串很长(可能包含巨大的字符串),是否存在任何问题 如果仍在int32.maxvalue范围内,则也可以使用base 64编码字节 长度,iis本身是否有任何限制(如最大值) 长度(我可以返回)

就IIS而言,我认为不会有问题。但正如我前面提到的,如果将序列化执行为字符串,而不是将其直接流式传输到客户端,那么服务器上将消耗大量内存

或者我应该写一个循环来逐个字符地发送字符串 是否每x个字符刷新一次响应

这不会有多大帮助,因为内存中仍然有整个JSON字符串

作为旁白,我也想问一下,我是否应该在产品正面添加ut8 bom response.write以确保我可以使用json字符串 正确地放在听筒端


如果您使用我前面提到的两个JSON序列化程序中的一个,并将生成的JSON直接写入响应流,它们将负责添加此字符。

我认为在响应较大的情况下,要做的事情是获取响应流并写入响应流,而不是使用
response.write()
。虽然不是100%确定。是的,我听说过contract serializer和json.net,但我现在只想使用javascriptserializer,谢谢你的建议,这是个好主意。如果你想使用javascriptserializer,那么你使用
Response.Write
的方法就可以了。