Используя POSTMAN, я могу публиковать на http://XXXXXXXazurewebsites.net/api/Blob/UploadDoc с BODY, содержащим данные формы, которые представляют собой 2 текстовых поля и поток файлов. На самом деле, с помощью Postman тело может быть пустым, и оно все еще отправляет сообщения на конечную точку Api, как я подтвердил с точкой останова при удаленной отладке.
И код, использующий HttpClient, можетотправлять сообщения на конечную точку Api AspnetCore, когда она выполняется локально (т. е. http://localhost:8888/api/Blob/UploadDoc).
. Но когда тот же код конечной точки развернут в Azure, HttpClient.PostAsync получает 404 при отправке на тот же URL, что и Postman. в состоянии сделать запрос POST для.
ВОПРОС: Как это может работать на 2 экземплярах IISExpress, работающих локально, но не удается при развертывании в Azure?
Код клиента находится внутриметода [HttpPost] на контроллере в приложении Presentation App Svc, и перенаправляет запрос содержимого потока в контроллер Api, работающий в другом приложении Svc:
HttpClient localclient = new HttpClient();
//localclient.BaseAddress = new System.Uri("http://localhost:8888/api/"); //works posting to here
localclient.BaseAddress = new System.Uri("http://XXXXXXXXX.azurewebsites.net/api/"); //404 posting to site on azure!
HttpContent contentStream = new StreamContent(request.Body);
await localclient.PostAsync("Blob/UploadDoc", contentStream);
Я также пытался прочитать вПоток в виде байта [] и создание HttpContent из байта []. Но HttpClient.Post также получает 404, ala:
var memstream = new MemoryStream();
await request.Body.CopyToAsync(memstream);
memstream.Position = 0;
var contentba = new ByteArrayContent(memstream.ToArray());
var response = await localclient.PostAsJsonAsync("Blob/UploadDoc", contentba);
response.EnsureSuccessStatusCode(); // 404 when posting to site on Azure
Код API выглядит следующим образом:
[HttpPost("UploadDoc")]
[DisableFormValueModelBinding]
public async Task<IActionResult> UploadBlobAsync()
{
//work with Request ...
}
И браузер загружает файл ala:
<form id="uploadForm" action="https://AAAAAA.azurewebsites.net/api/Blob/UploadDoc" method="post"
enctype="multipart/form-data" onsubmit="AJAXSubmit(this);return false;">
<input id="submissionId" type="text" name="submissionId" maxlength="25" />
<input id="file" type="file" name="file" />
<input class="btn" type="submit" value="Upload" />
</form>