2015-08-18 3 views
0

Я выполняю операцию загрузки файла AJAX в моем приложении ASP.net MVC, в котором я также использую angularjs.Почему мой метод результата JSON возвращает ошибку ответа (500)

Сервисный метод вызова:

uploadFile: function() { 
     var defer = $q.defer(); 
     var fileInput = document.getElementById("files"); 
     var messageHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' }; 
     messageHeaders['X-File-Name'] = encodeURI(fileInput.files[0].name); 
     messageHeaders['X-File-Type'] = encodeURI(fileInput.files[0].type); 
     var fileData = fileInput.files[0]; 

     $http({ 
      url: window.ROOT + 'EmployerBenefit/UploadFile', 
      method: "POST", 
      data: fileData, 
      headers: messageHeaders 
     }).success(function(callback) { 
      defer.resolve(callback); 
     }); 
     return defer.promise; 
    }, 

Способ управления:

[AllowAnonymous] 
public JsonResult UploadFile(string attachmentType, int planId = 24527) 
{ 
    var success = true; 
    string message = ApplicationMessage.InvalidParameter; 
    // Validation part removed 
    if (success) 
    { 
     var inputStream = Request.InputStream; 
     var fileLenght = (int) inputStream.Length; 
     var fileName = HttpUtility.UrlDecode(Request.Headers["X-File-Name"]); 
     var bytes = new byte[fileLenght]; 
     Request.InputStream.Read(bytes, 0, fileLenght); 
     if (!Directory.Exists(Server.MapPath("/Content/Images/" + CommonFunctions.ParseString(planId)))) 
     { 
      Directory.CreateDirectory(Server.MapPath("/Content/Images/" + CommonFunctions.ParseString(planId))); 
     } 
     System.IO.File.WriteAllBytes(
      Server.MapPath("/Content/Images/" + CommonFunctions.ParseString(planId) + "/" + fileName), bytes); 

    } 

    Response.StatusCode = (int)HttpStatusCode.OK; 
    return Json(new {success, message}, JsonRequestBehavior.AllowGet); 
} 

Вопрос:

У меня есть перехватчик для обработки ошибок в ответах на заводе, даже хотя я установил ответ s tatus как OK перехватчик поднимает responseError (500)?

Куда я иду не так?

+0

Какая ошибка у вас в 500? Похоже, у вас есть исключение в вашем коде –

+0

@VsevolodGoloviznin Я выбираю следующую ошибку '[System.Web.HttpRequestValidationException] = {« Потенциально опасное значение Request.Form было обнаружено у клиента (= \ "... # F RandomUser

+0

Вам нужно добавить атрибут' [ValidateInput (false)] 'к вашему действию –

ответ

0

Я изменил тип контента на undefined, и это, похоже, сработает.

{ 'Content-Type': undefined }; 
Смежные вопросы