none
本地测试正常,在多主机头的服务器下Request.ApplicationPath出错。 RRS feed

  • 问题

  • 大家好,第一次在这发问题,希望能够大家的帮助。

    第一次发布到服务器上时,并没有发生任何错误。

    nms.test.com 指向 c:\nms

    c:\bms(在原有网站上加了一个虚拟目录)

    用户访问方式:nms.test.com/bms

     

    但是为了用户访问方便,我们对服务器使用多主机头的方式,

    将原来的

    nms.test.com 指向 c:\nms

    bms.test.com 指向 c:\bms

     

    改了以后,我们原来在程序中使用

    this.Response.Redirect(Request.ApplicationPath + "/wfShowErrorMsg.aspx");//在这出现了错误,网站被定向到了http://wfShowErrorMsg.aspx这个错误的URL上面,但我的想法是http://bms.test.com/wfShowErrorMsg.aspx

     

    (注:在没有配置服务器的多主机头时,会被定向到http://nms.test.com/bms/wfShowErrorMsg.aspx 这个正确的URL上的)

     

    请问,如何解决这个问题?

     

    2008年11月5日 3:58

答案

  •  

    大家好,第一次在这发问题,希望能够大家的帮助。

    第一次发布到服务器上时,并没有发生任何错误。

    nms.test.com 指向 c:\nms

    c:\bms(在原有网站上加了一个虚拟目录)

    用户访问方式:nms.test.com/bms

    系统当出错时:http://nms.test.com/bms/wfShowErrorMsg.aspx

     

     

    但是为了用户访问方便,我们对服务器使用多主机头的方式,

    将原来的

    nms.test.com 指向 c:\nms

    bms.test.com 指向 c:\bms

    系统发生错误时:http://wfShowErrorMsg.aspx这个错误的URL上面

     

    Code Snippet

    程序代码如下:

    this.Response.Redirect(Request.ApplicationPath + "/wfShowErrorMsg.aspx");

     

     

    但我的想法是http://bms.test.com/wfShowErrorMsg.aspx

     

    (备注:在服务器没有配置多主机头的情况下,出错转向正常,当配置多主机头之后,出错转向路么出错)

     

    我想要的结果就是,无论我当前WEB应用程序处在哪种情况下,都要能够正常转向到"/wfShowErrorMsg.aspx"

     

    2008年11月5日 5:24

全部回复

  • 没看明白你的需求,是想从
    nms.test.com
    通过
    this.Response.Redirect方法定位到
    bms.test.com?
    使用
    Request.ApplicationPath是不行的
    2008年11月5日 4:44
    版主
  •  

    大家好,第一次在这发问题,希望能够大家的帮助。

    第一次发布到服务器上时,并没有发生任何错误。

    nms.test.com 指向 c:\nms

    c:\bms(在原有网站上加了一个虚拟目录)

    用户访问方式:nms.test.com/bms

    系统当出错时:http://nms.test.com/bms/wfShowErrorMsg.aspx

     

     

    但是为了用户访问方便,我们对服务器使用多主机头的方式,

    将原来的

    nms.test.com 指向 c:\nms

    bms.test.com 指向 c:\bms

    系统发生错误时:http://wfShowErrorMsg.aspx这个错误的URL上面

     

    Code Snippet

    程序代码如下:

    this.Response.Redirect(Request.ApplicationPath + "/wfShowErrorMsg.aspx");

     

     

    但我的想法是http://bms.test.com/wfShowErrorMsg.aspx

     

    (备注:在服务器没有配置多主机头的情况下,出错转向正常,当配置多主机头之后,出错转向路么出错)

     

    我想要的结果就是,无论我当前WEB应用程序处在哪种情况下,都要能够正常转向到"/wfShowErrorMsg.aspx"

     

    2008年11月5日 5:24
  • this.Response.Redirect("~/wfShowErrorMsg.aspx");
    就可以了
    2008年11月5日 5:47
    版主
  • 在本机测试已经通过了,尚未放到服务器上测试。

    谢谢孟子的回答。

    我还要问一下,

    Code Snippet

      protected void JSOpenWindow(string strPageName,int width,int height)
      {
       string strScript;
       strScript = "<script language='javascript'>window.open('" + strPageName + "','','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,top=' + (screen.height-" + height + ")/2 + ',left=' + (screen.width-" + width + ")/2 + ',width=" + width + ",height=" + height + "');</script>";

       this.Response.Write(strScript);
      }
            protected void PopPrintViewReport()
            {
                this.Response.Redirect("~/modCommon/wfRptPrintView.aspx");   //这句代码通过你的方法,运行正常
               JSOpenWindow("~/modCommon/wfRptPrintView.aspx", 800, 600); //为什么这句不能够正常打开我的窖口了?
              
            }

     

     

     

     

    希望能够得到孟子的回答,谢谢了。
    2008年11月5日 6:06
  • ~符号只能用在服务器端,客户端是不能用的,

    不过,Request.ApplicationPath是当前应用程序的虚拟根目录,应当可以使用这个进行转向的。
    你可以打印出来多主机头下 Request.ApplicationPath 是什么值,我觉得应当不会跟主机头有关系


    2008年11月5日 7:06
    版主
  • 我在Redirect以及Windows.open之前时,

    我的WEB路径都是用Request.ApplicationPath + "对应的aspx文件",

    而服务器上显示的却是http://wfShowErrorMsg.aspx,我想应该就在“多主机头”的情况下没有得到我虚拟路径对应URL。

     

    在没有配置“多主机头”的情况下,Request.ApplicationPath + "对应的aspx文件"这种方式是正常的。

     

     

    多主机头的情况下:Request.ApplicationPath  =""

    在第一种情况,放在网站的一个虚拟目录下,得到的是Request.ApplicationPath  ="/bms"

     

    我的想法就是无论什么时候,我Redirect以及Windows.Open都能够正常定位到文件。

    2008年11月5日 7:34