是否可以将以.aspx结尾的链接重定向到.ashx?

时间:2011-01-17 03:10:03

标签: xml-serialization ihttphandler

我们最近发布的网站主要基于SharePoint。有些网站需要直接返回XML。该项目的顾问将xml返回实现为.aspx页面,这些页面在page_load方法中编写响应对象。

经过一段时间研究之后,我重申这可能是错误的做法,因为它调用了我们不需要的ASPX页面的所有额外事件。

这是我的问题,我想将这些函数重新创建为.ashx与httphandler的链接。但是,我希望能够保留以.aspx结尾的原始链接以及伴随它们的get参数来决定返回哪种类型的XML。

是否可以将.aspx结束链接重写/重定向到.ashx链接。或者是否会导致IIS服务器错误地解释每个.aspx?

1 个答案:

答案 0 :(得分:0)

我觉得你很幸运...

我们做了类似的事情。我们的电子商务网络应用程序仅接受JPG,PNG和GIF文件作为产品图像,但我们希望为每个产品动态创建每个图像。

因此,我们将JPG,PNG和GIF文件重新映射为处理程序。

但是,我们不希望映射 ALL JPG,PNG和GIF文件,因为静态文件的效率非常低,所以我们只做了一些。

以下是如何做到的。

如果您的所有ASPX文件都遵循与其他文件无共享的类似文件规范,请将其添加到web.config下的<httpHandlers>

<add path="filespec*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>

如果他们不共享文件规范,则必须将它们逐个添加到web.config中:

<add path="oldaspx1.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>
<add path="oldaspx2*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>
<add path="oldaspx3*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>

为了使您可以使用IIS7集成管道中的运行,您还可以向<handlers>元素添加类似的行

然后,当'oldaspx1.aspx'的请求进入时,您的自定义处理程序将处理它(非常高效,没有启动页面生命周期)。

如果这样可以解决您的问题,请将其标记为已接受的答案,并在左侧显示复选标记。