1

这可能是一个初学者的 IIS 问题,但我的应用程序在加载 css 文件时遇到问题。

我创建了一个名为 iisstart2.htm 的测试页面,其中包含三个链接,以查看它将去哪里获取参考

<link type='text/css' rel='stylesheet' href='~/site1.css' />
<link type='text/css' rel='stylesheet' href='/site2.css' />
<link type='text/css' rel='stylesheet' href='site3.css' />

我复制了两份并放在这里:

  • C:\inetpub\wwwroot
  • C:\inetpub\wwwroot\ParentLevel

在编辑站点设置中,我将物理路径设置为C:\inetpub\wwwroot\ParentLevel

当我浏览到第一个 ( http://localhost/iisstart2.htm) 时,它会在此处查找 css 文件:

在此处输入图像描述

当我浏览到嵌套的 ( http://localhost/ParentLevel/iisstart2.htm) 时,它看起来在这里

在此处输入图像描述

当链接以 开头时/,它会一直回到根目录,但我想象它应该做的是在http://localhost/ParentLevel/site2.css

问题

我在哪里可以更改默认根目录?

4

1 回答 1

1

~是您想要的,“应用程序根操作员”。不过,它只能用于服务器控件。简单地添加runat="server"可能有效:

<link runat="server" type='text/css' rel='stylesheet' href='~/site1.css' />

编辑:显然以上不适用于linkscript标签 - 我不知道为什么。但是您可以使用MapPath,这是等效的:

<link type='text/css' rel='stylesheet' 
    href='<%= HttpContext.Current.Server.MapPath("~/site1.css") %>' />

或者,您可以使用辅助方法,它的优点是允许您轻松移动所有引用。就像是:

<link type='text/css' rel='stylesheet' href='<%= Application.GetCssPath("site1.css") %>' /> 

在哪里

public namespace GlobalUtil
{
    public class Application
    {
        public static string GetCssPath(string relPath)
        { 
            return System.Web.Configuration.ConfigurationManager.AppSettings["CssPath"] + relPath;
        }
    }
}

为此,您还希望在;中GlobalUtil注册命名空间。web.config以及CssPath不重新编译更改的设置:

<appSettings>
  <add key="CssPath" value="/ParentLevel/" />
<appSettings>

<system.web>

                       

于 2013-07-25T20:51:14.757 回答