#asp.net-core #file-upload
#asp.net-core #загрузка файла
Вопрос:
Я пытаюсь вызвать процедуру загрузки файла со своей страницы, но она выдает ошибку 405, прежде чем она даже попадет в действие в контроллере. Вот как я вызываю процедуру:
<a href="@Url.Action("DownloadFile", new { controller="Attachment" , attachmentId=Model.IssueData.AttachmentList[i].attachmentId })" class="fa fa-download "></a>
Кажется, он генерирует правильную строку:
https://localhost:44339/Attachment/DownloadFile?attachmentId=4
Однако он никогда не достигает действия DownloadFile контроллера вложения:
[ValidateAntiForgeryToken]
[HttpPost]
public FileResult DownloadFile(int attachmentId)
{
AttachmentModel file = _adoSqlService.DownloadFile(attachmentId);
return File(file.aFileData, file.aFileType, file.aFileName);
}
Вместо того, чтобы нажимать на контроллер, страница выдает ошибку 405
Ответ №1:
Тот, который указан в вашем a
теге, является HttpGet
запросом, но вы используете [HttpPost]
его в фоновом режиме, что приведет к тому, что метод будет запрещен.
Вы можете изменить свое действие следующим образом:
[HttpGet]
public FileResult DownloadFile(int attachmentId)
{
AttachmentModel file = _adoSqlService.DownloadFile(attachmentId);
return File(file.aFileData, file.aFileType, file.aFileName);
}