37

我正在 ASP.NET 4.0 和 IIS7 中编写一个 HTTP 处理程序,我需要生成一个未找到文件的条件。

我从 Mathew McDonald 的新书 Pro ASP.Net 4 in C# 2010 中复制了以下代码。(响应变量是当前 HttpResponse 的一个实例。)

response.Status = "File not found";
response.StatusCode = 404;

但是,我发现第一行会生成运行时错误HTTP status string is not valid.

如果,而不是上面的行,我使用以下内容:

response.Status = "404 Not found";

然后一切似乎都正常。事实上,我什至看到 response.StatusCode 自动设置为 404。

我的问题是我不希望这在生产服务器上失败。因此,如果我能理解实现这一目标的“正确”方法,我会感觉好多了。为什么第一种方法对 Mathew McDonald 有效,但对我无效?第二种方法总是可靠的吗?

任何人都可以提供任何提示吗?

4

1 回答 1

66

这是因为Status属性是发送给客户端的完整状态行,而不仅仅是消息。

你可以写:

response.Status = "404 File not found";

或者,最好:

response.StatusCode = 404;
response.StatusDescription = "File not found";

请注意,根据其文档,HttpResponse.Status不推荐使用HttpResponse.StatusDescription

于 2011-01-09T10:06:16.783 回答