gpt4 book ai didi

c# - 找不到文件时处理 FileContentResult

转载 作者:太空狗 更新时间:2023-10-29 17:34:29 29 4
gpt4 key购买 nike

我有一个 Controller 操作,它根据容器引用名称(即 blob 中文件的完整路径名)从 azure blob 下载文件。代码看起来像这样:

public FileContentResult GetDocument(String pathName)
{
try
{
Byte[] buffer = BlobStorage.DownloadFile(pathName);
FileContentResult result = new FileContentResult(buffer, "PDF");
String[] folders = pathName.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
// get the last one as actual "file name" based on some convention
result.FileDownloadName = folders[folders.Length - 1];

return result;
}
catch (Exception ex)
{
// log error
}
// how to handle if file is not found?
return new FileContentResult(new byte[] { }, "PDF");
}

BlobStorage 类是我的帮助类,用于从 blob 下载流。

我的问题在代码注释中陈述:找不到文件/流时,我应该如何处理?目前,我正在传递一个空的 PDF 文件,我觉得这不是最好的方式。

最佳答案

在 Web 应用程序中处理 not found 的正确方法是向客户端返回 404 HTTP 状态代码,在 ASP.NET MVC 术语中,这将转换为返回 HttpNotFoundResult。从你的 Controller Action :

return new HttpNotFoundResult();

啊,糟糕,没注意到你还在使用 ASP.NET MVC 2。你可以自己实现它,因为 HttpNotFoundResult 仅在 ASP.NET MVC 3 中引入:

public class HttpNotFoundResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
context.HttpContext.Response.StatusCode = 404;
}
}

关于c# - 找不到文件时处理 FileContentResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6450495/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com