C# 在很长的Json字符串上使用Context.Response.Write()的正确方法
我将iis和asp.net与c#一起使用 我有一个使用JavaScriptSerializer构建的JSON字符串,MaxJsonLength设置为Int32.MaxValue,现在我想使用response.write返回这个字符串,就像这个response.write(myJsonString)一样,但我想知道这是返回它的正确方法吗?如果字符串很长(也可能包含巨大的base64编码字节),如果它仍然在int32.maxvalue长度内,那么IIS本身是否有任何限制(如我可以返回的最大长度)?或者我应该写一个循环来逐个字符地发送字符串,并每隔x个字符刷新一次响应吗 顺便提一下,我是否应该在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本身是否有任何限制(如我可以返回的最大长度)?或
响应的前面添加一个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
的方法就可以了。