我正在开发一个使用URL路由的基于.NET 3.5 Web Forms的网站。到目前为止,我已经创建了一些路线,但我没有遇到任何问题。我现在有一个.ashx文件,当有人点击链接时,它将处理从SQL Server中的表发送.pdf文件到网站。通常,当我创建一个Handler时,它看起来像这样:
return BuildManager.CreateInstanceFromVirtualPath("~/ViewItem.aspx", typeof(Page)) as Page;
对于我的.ashx文件,我试过了:
return BuildManager.CreateInstanceFromVirtualPath("~/FileServer.ashx", typeof(Page)) as Page;
这不起作用,因为fileserver.ashx不是一个页面,因此将其转换为typeof(Page)),因为Page将失败。我应该将VirtualPath转换为什么而不是Page,或者是否有其他方式我应该这样做。
答案 0 :(得分:4)
使用typeof(IHttpHandler)
代替typeof(Page)
这是ashx文件的基类也将返回类型从Page更改为IHttpHandler。然后更新依赖于它作为页面的任何其他代码。
答案 1 :(得分:1)
它是一个HTTP处理程序,因此您可能可以使用其IHttpHandler接口类型进行转换。但你不能使用页面;你必须使用处理程序继承的类型。