0

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

经过一小段时间的研究,我意识到这可能是错误的方法,因为它会调用我们不需要的 ASPX 页面的所有额外事件。

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

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

4

1 回答 1

0

我想你可能很幸运...

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

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

然而,我们不想要所有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”的请求进入时,您的自定义处理程序将处理(非常有效,无需启动页面生命周期)。

如果这解决了您的问题,请将其标记为已接受的答案,并在左侧打勾。

于 2011-01-17T03:27:59.257 回答