URL路由,重写路径但保持mimetype

时间:2010-02-19 13:33:18

标签: asp.net css firefox url-routing

我已经为URL路由实现了自己的IRouteHandler 对于没有扩展名的文件,它将尝试从Pages目录加载文件名作为Page:

return (IHttpHandler) BuildManager.CreateInstanceFromVirtualPath(path, typeof(Page));

但是,还有图像和css文件(具有相对路径)需要转换为正确的URL。我尝试使用以下方法为这些文件提供服务:

try {
   HttpContext.Current.Server.Transfer(fileName);
} catch (HttpException) {
   throw new HttpException(404, "file not found");
}

这很好(在Internet Explorer中),但是Firefox给了我一个错误:

  

没有加载Styles.css,因为它   MIME类型“text / html”不是   “文本/ CSS”。

这是由Server.Transfer引起的吗? 我应该用什么来重定向文件? Response.Redirect对客户端可见。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,.NET 3.5和IIS7引入了一种新方法:Server.TransferRequest

使用TransferRequest方法,请求将通过IIS管道发回。 http://msdn.microsoft.com/en-us/library/aa344902.aspx

Firefox很高兴再次接受我的CSS文件。