使用.ashx文件的Web窗体的URL路由

时间:2010-03-22 17:12:50

标签: c# .net

我正在开发一个使用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,或者是否有其他方式我应该这样做。

2 个答案:

答案 0 :(得分:4)

使用typeof(IHttpHandler)代替typeof(Page)

这是ashx文件的基类也将返回类型从Page更改为IHttpHandler。然后更新依赖于它作为页面的任何其他代码。

答案 1 :(得分:1)

它是一个HTTP处理程序,因此您可能可以使用其IHttpHandler接口类型进行转换。但你不能使用页面;你必须使用处理程序继承的类型。