我们有遗留代码来维护,并且为了解决特定的客户定制问题,我们希望将对某些文件的调用路由到其他文件。也就是说,当应用程序调用特定的ASPX时,它最终会击中另一个ASPX。
如果你打电话:
www.foo.com/admin/admin.aspx
它实际上会命中:
www.foo.com/customizations/customer1/admin/admin.aspx
这不是一个好的设计,但这是遗留代码。我们只想解决这个问题。
我们正在使用System.Web.Routing
框架来解决它。将RouteExistingFiles
设置为true时,除静态文件(CSS,JavaScript和图像)外,这种方法很有效。
当我第一次尝试它时,它检索到了这个错误:
扩展名'.css'没有构建提供程序注册。
所以我在web.config文件中注册了.css
扩展名的构建提供程序。我使用了这个构建提供程序:PageBuilderProvider
因为有人在互联网上推荐它。
有效!但CSS正在使用text\html
内容类型。
我如何实现这一目标?
TL; DR:我想在ASP.NET Web窗体中使用路由来调用特定的CSS文件来实际检索另一个。客户需要这个来进行定制。
答案 0 :(得分:1)
尝试编写HttpHandler。我不得不做类似的事情但是对于PDF文件,我最终编写了一个自定义的HttpHandler - 效果非常好。您甚至可以在HttpHandler代码中设置内容类型,并在web.config中使用处理程序将使用的模式匹配路径。如果路径未指向现有文件,您也可以在web.config中配置它不执行,例如所以返回404而不必在处理程序本身中编写代码。我无法发布我的代码(VB.NET)ATM,因为我使用平板电脑但谷歌搜索教程。您可能还需要使用TransmitFile函数来实际写出css文件。它是一个Web表单项目或网站?如果它是一个网站,有一种在web.config中注册HttpHandler的特殊方式。