У меня есть страница app.net asp.net, где пользователь может загружать некоторые файлы. Я использую jquery-file-upload. Исходя из некоторого условия, я хочу отменить загрузку с серверной части, но она не работает. Независимо от того, что я делаю, файл всегда идет на сервер, прежде чем asp.net вернет ошибку. Пример, я могу держать только это при загрузке:Как отменить загрузку
public async Task<HttpResponseMessage> Post(int id, CancellationToken token)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Cant upload");
}
Если я ставлю точку останова на return
, я могу видеть, что это попало, как только начинается загружаемых но я должен ждать загрузки до конца и только затем вызывается обработчик ошибок javascript. Невозможно ли окончательно завершить запрос, отменив загрузку?
Update 1:
Я заменил Jquery-файл-загрузки с JQuery-форму, и теперь я использую ajaxSubmit на моей форме. Это ничего не изменило. я также пытался реализовать DelegatingHandler
, как это:
public class TestErrorHandler : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
//throw new HttpException(403, "You can't upload");
var response = request.CreateResponse(HttpStatusCode.Unauthorized);
response.ReasonPhrase = "You can't upload";
return Task.FromResult<HttpResponseMessage>(response).Result;
}
}
config.MessageHandlers.Add(new TestErrorHandler());
Это не сработало.
И я попытался отключить буфер запросов:
public class NoBufferPolicySelector : WebHostBufferPolicySelector
{
public override bool UseBufferedInputStream(object hostContext)
{
return false;
}
}
config.Services.Replace(typeof(IHostBufferPolicySelector), new NoBufferPolicySelector());
Нет игры - это еще загрузить все файлы перед возвратом ошибки.
Все что мне нужно - это отменить запрос на загрузку. Это невозможно с помощью web api или я что-то упустил?
У меня такая же проблема, и я тоже не могу найти ответ. Это не может быть так сложно ... – Wbmstrmjb
У меня и других подобных проблем, см. E. г. Отменить длительный почтовый запрос из ASP.NET Web API 2 (https://forums.asp.net/post/6157703.aspx) – Sonic78