我正在使用 asp.net 4 (c#)。我在 Html 5 画布上有一个绘图应用程序,能够添加图像和绘制多种颜色。我想将绘制的图像保存到 .png 文件。为此,我构建了一个 WebMethod:
[WebMethod(EnableSession = true)]
public static void UploadImage(string imageData,string name)
{
System.Diagnostics.Debug.WriteLine("here friend!");
}
现在我在页面上有一个按钮,我使用 javaScript 来调用这个方法:
function trySend()
{
var image = document.getElementById("drawCanvas").toDataURL("image/png");
image = image.replace('data:image/png;base64,', '');
var name = document.getElementById("userName").value;
$.ajax(
{
type: 'POST',
url: 'CanvasSave.aspx/UploadImage',
data: '{ "imageData" : "' + image + '" ' + ', "name" : "' + name + '"}',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
location.href = '<%= Page.ResolveUrl("~/ShowCards.aspx") %>';
}
});
}
问题是,如果我在画布上画一个简单的图画(一些线条或一个小圆圈),它就可以完美地工作。即使我有 1 个“邮票”(即图像),它仍然有效。
如果我画一个“复杂”的图像(不是很复杂!只是用不同颜色的划痕)或添加 2,3 个图章,它就不起作用。WebMethod 根本没有被调用,即使我等了很长时间。
我认为这与图像的大小有关。似乎如果数据的最终大小小于 80 kb(这是我能够保存的图像的最大大小),那么它可以工作,但是如果预期的图像大于这个,我就有问题了。同样,所有问题都在 JS 中,而不是在 C# 代码中。
这是我得到的 JavaScript 错误:
POST http://localhost:53751/CanvasSave.aspx/UploadImage 500 (Internal Server Error)
jquery.min.js:4
f.support.ajax.f.ajaxTransport.send jquery.min.js:4
f.extend.ajax jquery.min.js:4
trySend Default.aspx:21
onclick
这个问题的原因是什么,我该如何解决?