我有一个网站,其相对路径指向样式表,看起来像这样的“/stylesheets/main.css”。现在,当我在Visual Studio中运行该站点时,此工作正常。但是当我将站点部署到Windows Server 2003时,路径停止工作。如果我返回代码并将路径从“/stylesheets/main.css”更改为“stylesheets / main.css”,则该站点在服务器上正常工作。我在另一台使用相同路径样式(“/stylesheets/main.css”)和样式表的服务器上有另一个网站,没有任何问题。我真的不想改变所有的路径,甚至不确定这是代码或服务器的问题。任何帮助或想法都会很棒。感谢。
答案 0 :(得分:10)
网站是否部署到域的根目录?如果该网站位于
http://example.com/somefolder/
然后路径/stylesheet/main.css
将被解释为
http://example.com/stylesheet/main.css
而不是
http://example.com/somefolder/stylesheet/main.css
正如@Kit指出的那样,您可以通过解析应用程序文件夹的路径来解决此问题。我经常在ASP.NET中这样做:
<link rel="stylesheet" type="text/xss" href="<%= ResolveUrl("~/stylesheet/main.css") %>"/>
如果那不是问题,那么你将不得不提供更多细节。
答案 1 :(得分:3)
在ASP.NET中,很多时候您需要使用代字号(~
)来获取 应用程序 的根目录,因此您的路径看起来像~/stylesheets/main.css
当您指定以/
开头的路径时,您指示服务器 root,因此如果您将站点放在虚拟目录中,则不会将其考虑在内,但如果该网站作为默认网站托管,路径将符合条件:
示例:名为foo.net
的服务器,其站点位于名为app
的虚拟目录中
/stylesheet
将转换为foo.net/stylesheet
而不是 foo.net/app/stylesheet
答案 2 :(得分:0)
最好不要使用相对路径,而是使用相对于服务器的完整路径。您可以通过在服务器上处理文档的标记来完成此操作。所以,像这样:
<head runat="server">
<link href="~/stylesheet/main.css" type="text/css" rel="stylesheet" />
</head>
代字号(〜)表示您来自网站的根目录。这样做的原因是因为您正在处理服务器上的头部。请注意,这也适用于在服务器上处理的任何其他标记。
答案 3 :(得分:0)
表单的网址路径
/path_preceded_by_a_slash
不是相对路径...它是一个绝对路径,表示路径搜索应该从DocumentRoot
开始,而不是包含请求文档的目录。
也许这就是你的问题。你应该使用相对路径,但你没有正确地做到这一点。
答案 4 :(得分:0)
使用绝对路径(例如/images/cool_image.gif')时,根文件夹是IIS设置的应用程序根文件夹。
同样棘手的是,如果您使用的是Visual Studio ASP .NET Web 应用程序项目,则在IIS或Web Hosting中设置Web应用程序时会设置应用程序的根目录控制面板。
如果您正在使用Visual Studio ASP .NET Web 站点项目,那么应用程序将自动“动态”编译,并且根目录可能是一般的IIS根文件夹,因为没有应用程序需要在IIS中明确设置。这不太可能与您的应用程序的实际根目录一致,因此在“网站”项目中应避免使用这种绝对路径。
有关Visual Studio“网站”与“网络应用程序”的讨论,谷歌搜索 - 这是一个热门话题。
本
答案 5 :(得分:0)
我知道这是一个旧线程,但对于未来的读者,我想补充一点,我注意到有时要使虚拟路径工作是必须从头部和拖动时删除runat =“server”部分任何属于主文件夹的页面中的文件,您需要从路径中删除“〜”或“...”。 像这样的东西:
<!DOCTYPE html>
<html>
<head>
<script src="javascript/Red/jquery.min.js"></script>
</head>
答案 6 :(得分:0)
这对我有用:
<script type="text/javascript" src="<%= ResolveUrl("~/Scripts/jquery-1.8.3.min.js") %>"></script>