У меня Windows Server 2012 RC с IIS 8. На этом сервере у меня есть две службы, которые работают на порту 80
- Сайт HTML / JS, который будет работать на клиенте и делать запросыв другую службу.
- Запись WebAPI на C #, которая будет получать запросы от клиента.Одной из функций сайта является загрузка файлов на сервер.
Проблема заключается в том, что когда WebAPI и сайт HTML работают в одном и том же порту, получаемый мной процесс загрузки происходит неправильно.
Пример. Если загрузка составляет 20%, я получаю отчет на 70%, а затем в какой-то момент до завершения загрузки получаю отчет на 100%.
Изображение, показывающее проблему
Код для получения файла в серверной части:
public async Task<IHttpActionResult> UploadVideo()
{
if (!Request.Content.IsMimeMultipartContent())
throw new
HttpResponseException(HttpStatusCode.UnsupportedMediaType);
var streamProvider = new
CustomMultipartFormDataStreamProvider(ServerPath);
await
Request.Content.ReadAsMultipartAsync(streamProvider)
}
Код для загрузки файла в веб-интерфейсе:
uploadFile(formData) {
this.uploadRequest = this.services.uploadVideo(formData,
this.video.Id).subscribe(res => {
// Via this API, you get access to the raw event stream.
// Look for upload progress events.
if (res.type === HttpEventType.UploadProgress) {
// This is an upload progress event. Compute and show the %
done:
console.log(res.loaded + "/" + res.total);
this.value = Math.round(100 * res.loaded / res.total);
console.log(this.value);
if (this.value == 100) {
this.readyToPost = true;
}
} else if (res instanceof HttpResponse) {
this.uploadFinished = true;
}
});
}
Я сделал тест, и когда две системы работают на разных портах, например, 80 и 8080, прогресс работает просто отлично.
Есть некоторая конфигурация, которую я могу сделать, чтобы заставить процесс загрузки работать, когда две службы работаютработает на том же порту?
Спасибо.