none
让人郁闷非常的问题 RRS feed

  • 问题

  • 我在web.config中定义了404自定义错误页面,放在了网站根目录中,如果是根目录文件发生404错误,则调用么有问题,如果调用子目录下的文件发生了404错误,则在调用这个自定义错误页面后,页面中的调用css文件或者js文件就会出错,因为它会以出错目录的路径调用,这样就会无法取得了。怎么解决这个问题?
    2011年7月27日 3:24

答案

全部回复

  • 路径前加 ~/

    相对路径




    Best Regards,
    If a post answers your question, please click "Mark As Answer" on that post and "Mark as Helpful".
    2011年7月27日 3:38
  • 没用的,比如img对象,用了“~/”得到的路径就是http://xxx/~/xxx

     

    2011年7月27日 4:27
  • 我就是奇怪了,调用404错误文件应该取的是该用该文件所在路径啊,怎么会用出错的路径
    2011年7月27日 4:58
  • Hi:

    为避免该错误页面的css文件和js文件路径错误,请参考此篇的做法:

    [ASP.net] 確保頁面的圖片、引用的JS檔和CSS檔路徑不會錯亂

    css文件和js文件的引用请用绝对路径


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年7月27日 5:58
  • 谢谢提供的资料,不知道asp.net技术这样的,还是是我使用自定义错误页的方法是有问题的。
    2011年7月27日 6:38
  • 404自定义错误页面中css或js文件的位置可能没写对.试试用/定位到根目录,然后写相对根目录的路径,如

    /css/1.css


    本帖内容仅供参考,没有任何保证. This post is provided without any warranty.
    2011年7月27日 7:42
    版主
  • 谢谢提供的资料,不知道asp.net技术这样的,还是是我使用自定义错误页的方法是有问题的。


    自定义错误页执行时期的css文件和js文件路径错掉

     

    / 为ServerRoot
    ~/为WebSite Root
    不管是开发还是部署,就个人经验还是用http://开头的绝对路径搭配上面超连结文章介绍的技巧最稳^_^


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年7月27日 9:01
  • 我现在只能用你说的方法了,不过在使用以上方法上其实也会有这个那个的小问题出现比如在模板页面中的<script>里使用就会有问题,必须放在contentplaceholder中才行,反正真是小问题多多。
    2011年7月27日 10:27
  • 不好意思,所以现在您css和js文件都可以正确引用了吧?

    您说的<script>会有小问题能分享出来吗?谢谢

    (不知道你是不是使用MVC 3)?


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年7月27日 10:41
  • 没有使用MVC,还是用的webform。我本来在模板页面中如果在<script>标签中使用了服务端脚本绑定动态获得地址,运行会出错,但是如果把它放在一个contentplaceholder中就不会出错了。

    原本:

    <script language="javascript" src="<%=GetAddress()%>"></script>   /*会出错*/

     

    现在

    <contentplaceholder runat="server">

     <script language="javascript" src="<%=GetAddress()%>"></script>    /*不会出错*/

    </contentplaceholder>

     


    2011年7月28日 2:18
  • 没有使用MVC,还是用的webform。我本来在模板页面中如果在<script>标签中使用了服务端脚本绑定动态获得地址,运行会出错,但是如果把它放在一个contentplaceholder中就不会出错了。

    原本:

    <script language="javascript" src="<%=GetAddress()%>"></script>   /*会出错*/

     

    现在

    <contentplaceholder runat="server">

     <script language="javascript" src="<%=GetAddress()%>"></script>    /*不会出错*/

    </contentplaceholder>

     



    我想可能是您的模板页面没有GetAddress()这个方法的关系

    [ASP.net] 確保頁面的圖片、引用的JS檔和CSS檔路徑不會錯亂

    个人文章的意思是

    您要在App_Code底下,宣告一个类,该类有个公开静态成员去读Web.config的http://网址的配置

    public class AppSettingsHelper 
    { 
    public static string WebUrlWWW = WebConfigurationManager.AppSettings["WebUrlWWW"]; 
    } 
    
    

    然后模板页再写类似这样:

    <script language="javascript" src="<%=AppSettingsHelper.WebUrlWWW%>jsFolder/myScript.js"></script>
    

    如此应该就能避掉此问题^_^


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年7月28日 3:11
  • 这个肯定是有的,应该是定义了一个静态方法。现在问题的详细情况是

    我觉得就是错误页面取得地址是根据出错目录决定的,比如以下目录结构 

          404.aspx 
          A/ 
          JS/js1.js 

    404.aspx中有以下代码 
    <script   language= "javascript "   src= "js/js1.js "> </script> 

    如果当前出错目录为根目录,那么由于404.aspx页面中js文件也是已根目录定义路径的,所以不会有错。 
    如果是在A目录中出错,则404.aspx认为当前的目录为A目录下,虽然自己本身是在根目录下,但是这是很根据根目录相对地址调用js文件就会出错了。

    2011年7月28日 3:54
  • 这个肯定是有的,应该是定义了一个静态方法。现在问题的详细情况是

    我觉得就是错误页面取得地址是根据出错目录决定的,比如以下目录结构 

          404.aspx 
          A/ 
          JS/js1.js 

    404.aspx中有以下代码 
    <script   language= "javascript "   src= "js/js1.js "> </script> 

    如果当前出错目录为根目录,那么由于404.aspx页面中js文件也是已根目录定义路径的,所以不会有错。 
    如果是在A目录中出错,则404.aspx认为当前的目录为A目录下,虽然自己本身是在根目录下,但是这是很根据根目录相对地址调用js文件就会出错了。


    感谢您详细描述

    那在404.aspx使用这招的话呢?(有无成功引用js档)

    <script language="javascript" src="<%=AppSettingsHelper.WebUrlWWW%>jsFolder/myScript.js"></script>
    
    
    
    

    另外,自订错误页面应该也可以配置绝对路径

    <customErrors mode="On" defaultRedirect="http://192.168.1.110/404.aspx">
    
       <error statusCode="404" redirect="http://192.168.1.110/404.aspx" />
    
    <!--绝对路径的话后面会带参数?aspxerrorpath=要求的Url-->
    
       </customErrors>
    
    

    ↑如此一来错误页面应该就不会跑到子目录去

     

    希望以上能帮助到您~


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年7月28日 7:18
  • 绝对路径比较麻烦,也是说部署和开发都要修改地址,如果不是在一个服务器上的话就比较麻烦了。
    2011年7月28日 8:09
  • ~/只有服务器认识

    img应该换成/

    2011年7月28日 15:54
  • 换成"/",对于如果是二级虚拟目录的情况就会错误了
    2011年7月29日 1:26
  • 你应该自动进行处理目录关系

     src= "<%= Page.ResolveUrl("~")%>js/js1.js"


    【孟子E章】
    2011年8月2日 1:35
    版主