Загрузка файла не удается достичь контроллера, вызывающего ошибку 405

#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);
}