HTTP状态码404表示文件不存在(Not Found),是网站中比较常见的一种错误。一般网站管理员或程序开发者都会对这个错误页进行自定义以提高用户体验。本文介绍的是通过Bing API来自定义404错误页。
要使用Bing API首先得有一个Windows Live ID,没有的可以到https://signup.live.com/注册。还需要一个AppID,如果没有可以到http://cn.bing.com/developers/createapp.aspx获取(需要Windows Live ID登陆)。
有了AppID后到http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=deca3e03-4f93-46d1-affc-493c0e02eb63&lc=2052下载Bing API Web Page Error Toolkit。下载来的是一个压缩包,内含2个文件夹。如果普通的使用只需要Deploy文件夹下的文件即可,WebErrorToolkit文件夹下有一个UserGuide.docx文件也值得一看,上面有比较完整地写了如何利用IIS来自定义404错误页。作为开发人员,可能更希望将自定义错误页直接集成进自己的项目。
首先将Error.aspx文件添加到项目中来,可以直接将该文件拖到Visual Studio的Solution Explorer也可以通过右键点项目名称然后选择Add Existing Item来添加。不一定要在根目录,也可以放在子文件夹中。然后右键该项目的References文件夹选择Add reference将压缩包Deploy\bin文件夹中的WebErrorToolkit.dll文件添加进来。
完成这两步以后将Deploy文件夹下的Web.config.merge文件与原来的Web.config文件的内容进行合并。其中<applicationSettings>节中的信息需要仔细设置,在UserGuide.docx文件的第8和第9页可找到详细说明。这里讲几个常用的。Market节设置成zh-CN可以使搜索结果只返回中文信息。IncludedDomains表示只在这些域下搜索,与当前域名无关。AppID就填前文中申请到的AppID。
这样,主要的步骤就已经完成了的。如果之前配置都正确,将这个项目部署在IIS7或以上版本的集成模式中应该是可以正常工作的,如果是IIS6及以下版本或IIS7的经典模式,可能就无法达到预期的效果了。这是由于在.net处理该请求前IIS已经将找不到文件的信息返回给客户端了,这只能在IIS上做设置,设置方法参见UserGuide的第5页或在“应用程序配置”对话框“映射”节中将要自定义404页面的扩展名进行编辑,可执行文件填写C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,目的是将其交由asp.net处理,同时取消勾选“确认文件是否存在”,一般只设置html、htm、aspx等扩展名。
如要要修改404页面的外观可直接修改Error.aspx文件。
如果要在404错误页中直接显示与用户请求有关的搜索结果,请参见UserGuide.docx文件第9、10页的Keyword Extraction Customization节。
WebErrorToolkit文件夹里有该项目的相关代码文件,可以自己做相应修改,修改完以后发布该项目,发布后的内容与Deploy文件夹的内容类似,可用上面的方法集成到自己的项目。
posted on 2009-11-16 13:34  Magic.Z  阅读(1114)  评论(2编辑  收藏  举报