我想发布base64字符串,但收到错误:System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializerserializer,Stringinput,Typetype,Int32depthLimit)
我的json有base64和一些关于图像的信息
的Ajax: (photo_data是数组保持图像信息)
$.ajax(
{
type: "POST",
contentType: "application/json; charset=utf-8",
url: serviceurl + "buy",
data:"{'userInfo':'"+JSON.stringify(userInfo)
+"','photos':'"+JSON.stringify(photo_data)+"','buyS':'asd'}",
dataType: "json",
success: function(msg)
{
},
error: function()
{
}
});
Web服务器:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public String buy(String userInfo,String photos,String buyS)
{
return "False";
}
修改
当我删除base64字符串时,它正在工作。 (我确信attr('src')
返回base64)
var photo=new Object();
//photo.imgSource=$(element).attr('src');
photo.s=s;
photo.c=c;
photo.p=p;
photo_data.push(photo);
答案 0 :(得分:4)
你应该做的是增加ASP.NET的“maxJsonLength”限制。默认值大约是100KB,要通过WebMethods和WebServices发送图像等大文件,你一定要增加这个限制。
在Web.Config文件中,您可以根据需要更改此默认限制。
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="1000000"/>
</webServices>
</scripting>
</system.web.extensions>
</configuration>
那个是~1MB。如果需要通过Web服务发送更大的文件,可以设置更高的值。
检查一下,如果有效,请告诉我。
编辑:我最近发现这不是你应该做的唯一设置。您还应该在web.config文件中设置httpruntime节点的“maxRequestLength”属性,如:
<system.web>
<httpRuntime targetFramework="4.5" maxRequestLength="10000" executionTimeout="10800" />
</system.web>
这里,maxRequestLength以KB为单位,因此10000表示~10MB(完全为9,77MB)。如果用户带宽较低且请求长度要求大于10MB,则可以将executionTimeout属性设置为更高的值。这是几秒钟,所以10800意味着3个小时。
我想你在这里得到了照片。
干杯!