ASP.net MVC - Проверить запрос статуса - PullRequest
1 голос
/ 04 апреля 2010

Просто интересно, возможно ли получить статус запроса из другого запроса?

Чтобы помочь обеспечить некоторый контекст, я хочу использовать ajax для загрузки некоторых файлов на сервер. Когда загрузка начнется, я хочу запустить еще один ajax-запрос, который проверяет, какая часть файла была загружена (или, другими словами, насколько большим был другой запрос и как долго сервер получает запрос).

Я думал, что мог бы использовать guid или что-то подобное, чтобы убедиться, что я проверяю статус правильного запроса. А как проверить статус другого запроса ???

Приветствие Anthony

Ответы [ 2 ]

1 голос
/ 04 апреля 2010

Это определенно возможно.Насколько мне известно, встроенной поддержки для проверки состояния другого запроса в ASP.NET MVC нет, но это не сложно реализовать.

public static UploadStatusHelper {
    static Dictionary<string, int> uploads = new Dictionary<string, int>();
    static object lockObj = new object();

    public static void SetStatus(string key, int bytesComplete) {
        lock(lockObj) {
            uploads[key] = bytesComplete;
        }
    }

    public static void GetStatus(string key) {
        lock(lockObj) {
            int bytesComplete = 0;
            if(uploads.TryGetValue(key, out bytesComplete) {
                return bytesComplete;
            }
            return 0;
        }
    }
}

Когда вы читаете часть загруженного файлафайл на сервере, вы бы позвонили

UploadStatusHelper.SetStatus(theKey, bytesRead);

Затем, используя Ajax, вы можете периодически инициировать HTTP-запрос POST к действию, которое возвращает ход, например,

[HttpPost]
public ActionResult GetProgress(string key)
    int bytesRead = UploadStatusHelper.GetStatus(key);
    return Json(new { bytesRead = bytesRead });
}

Вы быВозможно, вы захотите расширить этот помощник, чтобы сохранить общую длину файла и вернуть процент завершения, но это просто для того, чтобы показать вам, как это можно сделать.

0 голосов
/ 04 апреля 2010

Вы, вероятно, захотите изучить реализацию асинхронных запросов в ASP.NET MVC или что-то подобное.

...