Загрузка Ajax-файла в приложение MVC

В моем приложении MVC я использую Ajax upload (версия 3.5 (23.06.2009)) в этой части кода:

<div id="userPhotosUpload">
   <span class="tabs_fieldDesc">@Html.Label("txtPhotoDescription", "Desc")</span>
    @Html.TextBox("txtPhotoDescription", "", new { @maxlength = "30", @class = "tabs_fullLength" })              
    <div class="buttonLine">
       <button id="btnAddUserPhoto">Add picture</button>
    </div>
    <input id="txtSelectedPhotoFolderId" type="hidden" value="" />
</div>
<script type="text/javascript">
$(document).ready(function () {
//photo upload
var photoUpload = new AjaxUpload($('#btnAddUserPhoto'), {
    action: '/Profile/ProcessPhoto',
    name: 'uploadfile',
    responseType: 'json',
    autoSubmit: true,
    onSubmit: function (file, ext) {
        showProgressBar();
        photoUpload.setData({
            photoDescription: $('#txtPhotoDescription').val(),
            idPhotoFolder: $('#txtSelectedPhotoFolderId').val()
        });
    },
    onComplete: function (file, response) {
        hideProgressBar();
        $('#txtPhotoDescription').val('');
        var currentSelectedFolderId = getSelectedFolder();
        LoadPhotoFolders();
        SelectPhotoFolder(currentSelectedFolderId);
    }
});
</script>

Если я загружаю больший файл, чем 1 МБ, AjaxUpload не вызывает метод в контроллере:

[Authorize]
[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public JsonResult ProcessPhoto(string photoDescription, Int64 idPhotoFolder)
{
    //process request with file
}

и Fiddler2 покажи мне это:

POST / Profile / AddUserPhoto HTTP / 1.1 Хост: localhost: 55538 Пользователь-агент: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0 Принять: текст /html, приложение /xhtml+xml, приложение /xml;q=0,9,/; q = 0,8 Accept-Language: cs,en-us;q=0,7,en;q=0,3 Accept-Encoding: gzip, deflate Соединение: keep-alive Реферер: Cookie: AspxAutoDetectCookieSupport=1; .ASPXAUTH=AB45C67E90AD19402C47818CC4BC78504C96F6BB063E07F89E918F22D3A42B441B14B57818448BAAD3ABEEED48C1EA41431C89F149B3BA53D59950694F33C447462EE56AC33CFB54F1ADAC7B7A4F5D69F6ED3855A649F217EDC56B2250E6BFC87052C0640C1C191F212A76B3A9D9973609F6E537992BBADBC1A3F97853A8B90485DE9C11819D54D1F0D0F9838EDAE73E; ASP.NET_SessionId=gflyfmea2ty2gm3i4rea2adx Content-Type: multipart/form-data; border = --------------------------- 481414423196 Content-Length: 6046387

----------------------------- 481414423196 Содержание-Расположение: форма-данные; имя = "photoDescription"

----------------------------- 481414423196 Содержание-Расположение: форма-данные; имя = "idPhotoFolder"

136 ----------------------------- 481414423196 Содержание-Расположение: форма-данные; Name="uploadfile"; filename="sam_1103.jpg" Тип контента: image / jpeg

HTTP / 1.1 504 Fiddler - ошибка получения типа содержимого: text/html; charset=UTF-8 Соединение: закрыть Отметка времени: 15: 30: 34.321

[Fiddler] ReadResponse () не удалось: сервер не вернул ответ на этот запрос.

Какая-то идея, где проблема?

Спасибо

1 ответ

Решение

Похоже, сервер не отвечает (http 504).

Есть ли метод ProcessPhoto позвонить вообще?

Если нет, то вам, вероятно, стоит взглянуть на настройки.config. Вы также можете проверить ответ сервера в методе ajax onComplete, не включив fiddler.

Если ваш сервер ProcessPhoto метод вызывается, происходит ли ошибка как на локальном веб-сервере, так и на удаленном веб-сервере (было бы неплохо устранить любой другой возможный источник тайм-аута).

Наконец, если ваш метод вызывается, возможно ли, что ваша обработка фотографий, а не взаимодействие с веб-сервером, на самом деле идет медленно? Последнее было бы моим первоначальным предположением, но было бы неплохо с дополнительной информацией:-)

Во всяком случае, только некоторые идеи:-)

Другие вопросы по тегам