2016-10-18 3 views
0

これを理解するのが難しいです。私は本当にいくつかの助けに感謝します。500内部サーバーjquery ajaxとwebメソッドにbase64イメージを送信するときの生産時のエラー

localhostと単一のテストサーバーで正常に動作します。プロダクション環境はウェブクラスタです。

ajax呼び出しのデータ配列からBase64イメージを削除し、webメソッドのパラメータとしてすべてを正常に動作させることができます。

ここに私のコードです:

JS

var img = $('.finalize-img').attr('src'); //Src is a base64 string 
//var img = base64.replace(/^data:image\/(png|jpg);base64,/, ""); 

$.ajax({ 
       type: 'POST', 
       contentType: 'application/json; charset=utf-8', 
       url: 'Thank-You.aspx/Upload', 
       dataType: "json", 
       processData: false, 
       data: "{'img':'" + img + "', 'firstname':'" + firstname + "', 'lastname':'" + lastname + "', 'emailaddress':'" + emailaddress + "'}", 
       success: function (msg) { 
        var m = msg.d; 
       }, 
       error: function (jqXHR, error, errorThrown) { 
        if (jqXHR.status && jqXHR.status == 400) { 
         alert('An error occurred. Please try again.'); 
         //alert(jqXHR.status + " -- " + jqXHR.responseText); 
        } 
       } 
      }); 

C#

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static string Upload(string img, string firstname, string lastname, string emailaddress) 
{ 
    string base64 = img.Replace("data:image/png;base64,", ""); 

    string path = ConfigurationManager.AppSettings["UploadImagePath"]; 
    string fileName = "Image_" + DateTime.UtcNow.Year + DateTime.UtcNow.Month + DateTime.UtcNow.Day + DateTime.UtcNow.Hour + DateTime.UtcNow.Minute + DateTime.UtcNow.Second + DateTime.UtcNow.Millisecond + "_" + Guid.NewGuid() + ".jpg"; 

    int imageQuality; 

    if (!int.TryParse(ConfigurationManager.AppSettings["UploadImageQuality"], out imageQuality)) 
    { 
     imageQuality = 50; 
    } 

    byte[] bytes = Convert.FromBase64String(img); 

    System.Drawing.Image image; 
    using (MemoryStream ms = new MemoryStream(bytes)) 
    { 
     image = System.Drawing.Image.FromStream(ms); 
    } 

    try 
    { 
     EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, imageQuality); 
     ImageCodecInfo jpegCodec = null; 
     ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); 

     for (int i = 0; i < codecs.Length; i++) 
     { 
      if (codecs[i].MimeType == "image/jpeg") 
      { 
       jpegCodec = codecs[i]; 
      } 
     } 

     if (jpegCodec != null) 
     { 
      EncoderParameters encoderParams = new EncoderParameters(1); 
      encoderParams.Param[0] = qualityParam; 

      image.Save(path + fileName, jpegCodec, encoderParams); 
     } 
    } 
    catch (Exception ex) 
    { 
     return "Message:" + ex.Message + " Source:" + ex.Source + " Inner Exception:" + ex.InnerException; 
    } 

    return fileName; 
} 

********* UPDATEの******** ** イベントビューアーでこれが見つかりました イベントコード:3005 イベントm essage:未処理の例外が発生しました。 イベント時間:2016年10月18日3時32分57秒PM イベント時間(UTC):2016年10月18日8時32分57秒PM イベントID:6a016eb99ac74d558cb1ec42df643299 イベントシーケンス:13221 イベント発生:12 イベント詳細コード:0

アプリケーション情報: アプリケーションドメイン:/ LM/W3SVC/2/ROOT-5から131212864443437500 信頼レベル:完全 アプリケーション仮想パス:/ アプリケーションパス:D:\サイトが\ MS \ マシン名:MOVWEB4

プロセス情報: のプロセスID:4048 プロセス名:w3wp.exeの アカウント名:NT AUTHORITY \ NETWORK SERVICE

例外情報: 例外の種類:ArgumentExceptionが 例外メッセージ:不明なWebメソッドのアップロード。 パラメータ名:System.WebのでSystem.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.ExecuteでSystem.Web.Handlers.ScriptModule.OnPostAcquireRequestStateでmethodNameの (オブジェクト送信者、EventArgsののEventArgs)を () 。 HttpApplication.ExecuteStep(IExecutionStepステップ、ブール& completedSynchronously)

リクエスト情報: リクエストURL:http://beta.ms.com/Thank-You.aspx/Upload 要求パス:/Thank-You.aspx/Upload ユーザーホストアドレス:
ユーザー:匿名 が認証される:偽 Authen ticationタイプ:
スレッドアカウント名:NT AUTHORITY \ NETWORK SERVICE

スレッド情報: スレッドID:27 スレッドアカウント名:NT AUTHORITY \ NETWORK SERVICE が偽装されています:偽 スタックトレース:System.Webのでは。 .Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStepにHandler.ScriptModule.OnPostAcquireRequestState(Object sender、EventArgs eventArgs) を追加します。System.Web.HttpApplication.ExecuteStep(IExecutionStepステップ、ブール& completedSynchronously)

カスタムイベントの詳細で() を実行します。

答えて

1

あなたがしようとしているフォルダにIISユーザーグループの書き込み権限を与える必要がファイルをアップロードするにはConfigurationManager.AppSettings ["UploadImagePath"]

+0

私はネットワークサービスに対して変更権限を与えました。それはそうするべきですよね? – user3321095

+0

IIS_IUSRSはあなたに許可を与える必要があります –

+0

ありがとう、しかしそれは違いをもたらさなかった – user3321095

0

ありがとうございます。私は今働いている。

関連する問題