如何 return 不存在的页面出现 404 错误?
How to return a 404 error for non-existent page?
我正在开发 .NET/C# 文档网络应用程序。单击网站上的 link 时,它会按名称获取文档并显示页面。
过程是这些文档名称中有空格,因此当单击网站上的 link 时,请求在发送时将空格替换为 %20。该请求 url 正在从 %20 中剥离,以获取后端带有空格的实际文档名称。
问题是,如果我在 url 上输入没有空格的文档名称,它会给我内部错误而不是 404 错误。有谁知道如何解决这个问题?
例如:
- 文档名称:安装Prereq.md
- 实际URL:
/home/documentation/Installation%20Prereq.md
--> 这成功了returns 文档
但是,
- 错误URL:
/home/documentation/InstallationPrereq.d
--> 这个returns
500 错误,我想将其设置为 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;
}
我正在开发 .NET/C# 文档网络应用程序。单击网站上的 link 时,它会按名称获取文档并显示页面。
过程是这些文档名称中有空格,因此当单击网站上的 link 时,请求在发送时将空格替换为 %20。该请求 url 正在从 %20 中剥离,以获取后端带有空格的实际文档名称。
问题是,如果我在 url 上输入没有空格的文档名称,它会给我内部错误而不是 404 错误。有谁知道如何解决这个问题?
例如:
- 文档名称:安装Prereq.md
- 实际URL:
/home/documentation/Installation%20Prereq.md
--> 这成功了returns 文档
但是,
- 错误URL:
/home/documentation/InstallationPrereq.d
--> 这个returns 500 错误,我想将其设置为 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;
}