我正试图从页面中调用一个文件下载例程,但它在控制器中执行操作之前就抛出了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
然而,它从未达到附件控制器的下载文件操作:
[ValidateAntiForgeryToken]
[HttpPost]
public FileResult DownloadFile(int attachmentId)
{
AttachmentModel file = _adoSqlService.DownloadFile(attachmentId);
return File(file.aFileData, file.aFileType, file.aFileName);
}
页面没有击中控制器,而是抛出405错误
您的a
标记中的一个是HttpGet
请求,但您在后台使用[HttpPost]
,这将导致该方法不被允许。
您可以按如下方式修改您的操作:
[HttpGet]
public FileResult DownloadFile(int attachmentId)
{
AttachmentModel file = _adoSqlService.DownloadFile(attachmentId);
return File(file.aFileData, file.aFileType, file.aFileName);
}