4

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 (これは保存できた画像の最大サイズ) 未満の場合は機能するようですが、意図した画像がこれよりも大きくなると問題が発生します。繰り返しますが、すべての問題は C# コードではなく JS にあります。

これは私が得る 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

この問題の原因は何ですか?どうすれば修正できますか?

4

1 に答える 1

1

コメントで述べているように、私は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には、アップロードと投稿の制限に関して変更する必要のある2つの設定があります。

編集

変更maxJsonLengthするには、サーバー上のweb.configファイルに以下を追加する必要があります。

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="5000000">
      </jsonSerialization>
    </webServices>
  </scripting>
</system.web.extensions>

デフォルトが何であるかが明確にわかりませんmaxJsonLength。2097152文字だと言う人もいれば、102400文字だと言う人もいます...どちらでも、5000000で十分です:)

以下は、maxJsonLengthが現在何であるかを調べるのに役立つ可能性があります。

maxJsonLengthのデフォルト値に関する混乱

于 2012-08-30T13:25:39.780 に答える