2009-03-04 92 views
1

我有一个网格,它提供了一些用户下载文件的链接。文件存储在应用程序之外,从数据库中读取路径引用,并使用HTTP处理程序(* .ashx)为每个请求的文件提供服务。但是,可能会有数据库条目指向不存在的文件。我找到FileNotFoundException,但我不确定什么是最好的方法来通知用户丢失的文件(以便他们可以联系支持)。在文件下载HTTP处理程序中处理404的最佳方法?

第一个想法是在响应上设置一个标准的404代码,这就是我现在所做的。

更有用的方法是显示关于缺少文件的通知(jQuery),但文件下载不是在AJAX中完成的,因此这涉及到两个步骤 - 客户端onclick处理程序调用Web服务方法检查文件是否存在,如果不存在,则取消点击(返回false)并向用户显示友好的消息。如果文件存在,然后我继续正常执行。但是这又增加了另一个服务器调用。

你有没有处理过类似的问题?你是如何解决它的?

一些说明 - 应用程序构建在ASP.NET 2.0中,并使用jQuery调用Web服务方法。

回答

1

帕维尔,看来你已经回答了你的已经问题...

...(这样他们可以联系 支持)...

通过声明以上我会建议您创建一个自定义404页面,通知用户该文件不存在于磁盘上,并向他们提供有关如何与支持办公室联系的信息。

我已经创建了用于处理文件的HTTP处理程序,如果文件不存在于磁盘上,则返回404响应。我已经设置IIS来显示一个自定义页面,如果一个404响应已被抛出..(和我做同样的错误500)。

希望这可以帮助您,找到符合您需求的解决方案,祝您好运!

+0

但是,我不能区分缺少的文件情况和整个页面丢失时。我可以在404页面上提供一些更详细的解释,例如“如果您尝试下载文件联系人支持,如果您尝试访问无法找到的页面”等)。 – 2009-03-04 11:57:40