css - 使用 MVC 3 在 IIS 6 上动态创建 Site.css。在 dev 中工作,prod 失败。为什么?

标签 css asp.net-mvc model-view-controller iis-6

我正在使用 MVC Controller /操作在我的 MVC 3 站点中动态创建 site.css。它的工作方式是我将路由映射到 Site.css,如下所示:

routes.MapRoute("CSS", "Content/Site.css", new { controller = "CSS", action = "Index" });

然后在我的 CSSController 中有以下代码:

public ActionResult Index() {
    string path = Request.PhysicalPath.Replace("Site.css","SiteStyles.css");
    byte[] data = null;

    try {
        using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)) {
            data = ProcessCSS(fs);
        }
    } catch (Exception e) {
        Logger.Write(new LogEntry(e.Message, "Error", 99, 1001, System.Diagnostics.TraceEventType.Error, "CSS Error", null));
        throw e;
    }

    return File(data, "text/css","Site.css");
}

ProcessCSS 方法中发生的事情是它通过 SiteStyles.css 并对我定义的一些常量执行查找/替换,这样我就可以在顶部定义一组颜色作为命名常量,然后我可以在任何地方在站点中需要那种颜色我只使用命名常量。这样我就可以更改颜色一次,它会传播到样式表中所有适当的位置,而无需我去触摸 5-6 个不同的位置。

以上代码在我的本地环境和开发服务器(运行 IIS6 的 Windows Server 2003)上调试效果很好。但是,当我将其部署到同样运行 IIS6 的 Windows Server 2003 的生产服务器时,未加载 css 并且当我尝试浏览到 Site.css(应该通过我的路由进行映射)时,我得到 404 not found错误。如果我转到我的开发服务器并获取 Site.css 的输出并在生产服务器上创建一个物理 Site.css 文件,它就可以工作。

知道为什么这在生产服务器上失败了吗?

我在我的 CSSControler 中添加了一些日志记录来记录它在哪里寻找 SiteStyles.css 并且日志根本没有在生产服务器上生成,这告诉我服务器完全忽略了映射的路由并且没有执行代码在 Controller 中。

如有任何关于从哪里开始的建议,我们将不胜感激。

最佳答案

在我看来,您应该仔细检查生产服务器上的 IIS 配置,以确保应用必要的映射。

您是在开发服务器的 IIS 中使用通配符(星号)映射,还是为 .css 扩展定义了映射?您可能需要验证生产服务器是否具有相同的映射。

关于css - 使用 MVC 3 在 IIS 6 上动态创建 Site.css。在 dev 中工作,prod 失败。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10389310/

相关文章:

css - 屏幕尺寸 350px 或更小的响应式网格

css - box-shadow 不适用于包含缩略图的普通链接

css - <div> 旁边的另一个 <div> 内的 <div> 的全尺寸

c# - 返回 FileStream 后无法删除临时文件

asp.net - 从 Web 应用程序加载/保存 Word 文档 (asp.net MVC)

iPhone Interface Builder 使 View 成为 subview

java - MVC - 我需要在 View 中使用 Controller 吗?

html - 相对于 div 的动态搜索栏

javascript - 通过从 Controller 调用显示 toast 消息

mongodb - Search 在 MVC 软件模式中处于什么位置?