Почему мой метод результата JSON возвращает ошибку ответа (500) [duplicate]

0

Я выполняю операцию загрузки файлов AJAX в моем приложении ASP.net MVC, в котором я также использую angularjs.

Вызов метода услуги:

    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);
}

Вопрос:

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

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

  • 0
    Так какую ошибку вы получаете в 500? Похоже, у вас есть исключение в вашем коде
  • 0
    @VsevolodGoloviznin Я выбрал следующую ошибку [System.Web.HttpRequestValidationException] = {"A potentially dangerous Request.Form value was detected from the client (=\"...�������#�<l�fTt_3,����>�F�<G...\")."}
Показать ещё 5 комментариев
Теги:
asp.net-mvc
httpresponse

1 ответ

0

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

{ 'Content-Type': undefined };

Ещё вопросы

Сообщество Overcoder
Наверх
Меню