如何 return 不存在的页面出现 404 错误?

How to return a 404 error for non-existent page?

我正在开发 .NET/C# 文档网络应用程序。单击网站上的 link 时,它会按名称获取文档并显示页面。

过程是这些文档名称中有空格,因此当单击网站上的 link 时,请求在发送时将空格替换为 %20。该请求 url 正在从 %20 中剥离,以获取后端带有空格的实际文档名称。

问题是,如果我在 url 上输入没有空格的文档名称,它会给我内部错误而不是 404 错误。有谁知道如何解决这个问题?

例如:

但是,

.NET 在您尝试 access/return 不存在的文件时抛出异常。此异常由 IIS 捕获(如果您的应用程序不处理它),它 return 是一个带有 500 状态代码的 HTTP 响应。

解决方案是检查文件是否存在,即File.Exists("folder/filename")

如果它 returns false,让它知道你的控制器的动作,它可以 return 一个带有 404 状态码的响应:

public ActionResult ControllerAction(string filename)
{
    var theFile = TryFindFile(filename, out fileFound);

    if (fileFound == false)
        return new HttpNotFoundResult(); // this returns a HTTP response with 404 status code

    return theFile;
}