我已经为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对客户端可见。
答案 0 :(得分:0)
我找到了一个解决方案,.NET 3.5和IIS7引入了一种新方法:Server.TransferRequest
。
使用TransferRequest方法,请求将通过IIS管道发回。 http://msdn.microsoft.com/en-us/library/aa344902.aspx
Firefox很高兴再次接受我的CSS文件。