这可能是一个初学者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
找到site2.css
问题
我可以在哪里更改默认的根目录?
答案 0 :(得分:1)
~
是您想要的"application root operator"。但它只能用于服务器控件。只需添加runat="server"
即可:
<link runat="server" type='text/css' rel='stylesheet' href='~/site1.css' />
修改:显然上述内容不适用于link
或script
代码 - 我不知道为什么。但您可以使用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>