1

我们有遗留代码要维护,为了解决特定的客户定制问题,我们希望将对某些文件的调用路由到其他文件。也就是说,当应用程序调用一个特定的 ASPX 时,它最终会碰到另一个 ASPX。

如果你打电话:

www.foo.com/admin/admin.aspx

它实际上会击中:

www.foo.com/customizations/customer1/admin/admin.aspx

这不是一个好的设计,但这是遗留代码。我们只是想解决这个问题。

我们正在使用System.Web.Routing框架来解决它。当您设置RouteExistingFiles为 true 时,这可以正常工作,静态文件(CSS、JavaScript 和图像)除外。当我第一次尝试它时,它检索到这个错误:

扩展“.css”没有构建提供程序注册。

.css所以我确实在扩展的 web.config 文件中注册了一个构建提供程序。我使用了这个构建提供程序:PageBuilderProvider因为有人在互联网上推荐它。

有用!但是 CSS 是通过text\html内容类型提供的。

我如何实现这一目标?

TL;DR:我想在 ASP.NET Web 窗体中使用路由来调用特定的 CSS 文件以实际检索另一个文件。客户需要这个来进行定制。

4

1 回答 1

1

尝试编写一个 HttpHandler。我必须做类似的事情,但对于 PDF 文件,我最后编写了一个自定义 HttpHandler - 效果很好。您甚至可以在 HttpHandler 代码中设置内容类型,并在 web.config 中使用该处理程序的模式匹配路径。您还可以在 web.config 中将其配置为在路径不指向现有文件时不执行,例如返回 404 而无需在处理程序本身中编写代码。我无法发布我的代码 (VB.NET) ATM,因为我使用的是平板电脑,但谷歌搜索教程。您可能还需要使用 TransmitFile 函数来实际写出 css 文件。它是 Web 表单项目还是网站?如果它是一个网站,则有一种特殊的方法可以在 web.config 中注册 HttpHandler。

于 2013-08-02T18:49:48.407 回答