我正在使用.NET / C#文档Web应用程序。单击网站上的链接后,它将按名称获取文档并显示页面。
该过程是这些文档名称中包含空格,因此,在单击网站上的链接时,请求在发送时用%20替换空格。该请求网址已从%20剥离,以获取实际的文档名称,并在后端带有空格。
问题是,如果我在url上输入文档名称时不带空格,则会出现内部错误而不是404错误。有人知道如何解决此问题吗?
例如:
/home/documentation/Installation%20Prereq.md
->这将成功返回文档但是
/home/documentation/InstallationPrereq.d
->返回500错误,我想将此错误设置为404,因为没有具有这样名称的文档。。NET尝试访问/返回不存在的文件时会引发异常。 IIS(如果您的应用程序不处理它)将捕获此异常,该IIS返回带有500
状态代码的HTTP响应。
解决方案是检查文件是否存在,即File.Exists("folder/filename")
如果返回false
,请告知您控制器的动作,然后它会返回状态码为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;
}