FileResult类型控制器方法文件不存在时如何跳转至登录页面
报错原因
你定义的方法返回类型固定为FileResult,但Redirect("~/Login")返回的是RedirectResult类型,二者不存在继承兼容关系,因此会触发类型转换异常。
解决方案
直接修改方法的返回类型即可:
- 若使用ASP.NET Core,将返回值改为
IActionResult - 若使用ASP.NET MVC 5及更早的.NET Framework版本,将返回值改为
ActionResult
IActionResult/ActionResult是所有控制器返回结果的公共父类,同时兼容FileResult和RedirectResult类型,修改后完全匹配业务需求,不会影响原有逻辑的正常运行。
修改后参考代码
[HttpGet] public IActionResult GetFile(string fileManagerGuidId,string accessGroup) { var FileInfo = GetFile(fileManagerGuidId); if (FileInfo != null) { FileManagerLog _filemanagerLog = new FileManagerLog(); _filemanagerLog.CustomerId =Request.Cookies["customerid"] != null ? Convert.ToInt32(Request.Cookies["customerid"].Value) : 0; _filemanagerLog.FileManagerGuid = new Guid(fileManagerGuidId); SaveFileManagerLog(_filemanagerLog); byte[] fileBytes = FileInfo.FileData; return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, FileInfo.FileName); } else { return Redirect("~/Login"); } }
内容的提问来源于stack exchange,提问作者Jefferson
相关产品推荐
相关产品推荐

