我正在使用asp.net 4(C#)。
我在HTML 5 Canvas 上有一个绘图应用程序,能够添加图像并绘制多种颜色。
我想将图像drawen保存为.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") %>';
        }
     });
}

事实是,如果我在 Canvas 上绘制一个简单的图形(一些线条或一个小圆圈),则效果会很好。
即使我有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

此问题的原因是什么,如何解决?

最佳答案

正如我在评论中指出的那样,我不是ASP / Windows专家-我敢肯定这里的其他人可以澄清一下,但是从网上阅读的内容来看,您需要在服务器上执行以下操作:

Add the following to your web.config or mod the settings in the machine.config

<system.web>
  <httpRuntime maxRequestLength="XXXXXX" />
</system.web>

上面应该更改任何请求所允许的最大大小,我假设XXXXX值需要以字节为单位。现在,这是否是唯一要更改的配置设置还有待观察。 PHP有两个需要更改的上传和发布限制设置。

编辑

为了更改maxJsonLength,您需要在服务器上的web.config文件中添加以下内容:
<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="5000000">
      </jsonSerialization>
    </webServices>
  </scripting>
</system.web.extensions>

我无法清楚了解默认的maxJsonLength是什么,有人说它是2097152个字符,而有人说是102400个字符...以5000000为准:)

以下内容对于确定您的maxJsonLength当前可能有用:

Confusion over maxJsonLength default value

09-19 11:26