我有一个页面可以检查用户是否已登录或文件是否公开,然后通过Response.WriteFile将PDF推送到浏览器。

除Google为文件建立索引然后我们删除文件外,它的工作原理非常好。因此,我正在考虑向Response.Status添加410 Gone,然后重定向到我们的error.aspx页面。

Firebug告诉我,删除文件后,它在文档页面上得到“ 302 Found”状态代码。我期望是410。

重定向代码为:

Response.Status = "410 Gone";
Response.AddHeader("Location", Request.Url.ToString());
Response.Redirect("error.aspx");


有人可以告诉我我怎么了吗?

最佳答案

通过发送指示资源在其他地方可用的状态(例如301永久移动或302找到)来完成重定向。您不能在同一响应中发送两个状态代码。所请求的资源不存在(因此您发送410),或者它确实存在于其他位置(因此您发送了301或302或其他内容)。

不过,我认为您不应该重定向到错误页面,因为错误消息不是应该具有自己的URL的单独资源。如果客户端请求文件并且文件已丢失,请以错误消息作为响应正文发送410 Gone状态-这样,错误消息将从不存在的文件本身的URL返回。搜索引擎将看到状态码并了解文件已消失,浏览器将向用户显示响应正文,以便他可以读取错误消息。

关于c# - 发送410 Gone header ,然后重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9594212/

10-12 15:31