积极答复者
本地测试正常,在多主机头的服务器下Request.ApplicationPath出错。

问题
-
大家好,第一次在这发问题,希望能够大家的帮助。
第一次发布到服务器上时,并没有发生任何错误。
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上的)
请问,如何解决这个问题?
答案
-
大家好,第一次在这发问题,希望能够大家的帮助。
第一次发布到服务器上时,并没有发生任何错误。
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"
全部回复
-
大家好,第一次在这发问题,希望能够大家的帮助。
第一次发布到服务器上时,并没有发生任何错误。
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"
-
在本机测试已经通过了,尚未放到服务器上测试。
谢谢孟子的回答。
我还要问一下,
Code Snippetprotected 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); //为什么这句不能够正常打开我的窖口了?
} -
我在Redirect以及Windows.open之前时,
我的WEB路径都是用Request.ApplicationPath + "对应的aspx文件",
而服务器上显示的却是http://wfShowErrorMsg.aspx,我想应该就在“多主机头”的情况下没有得到我虚拟路径对应URL。
在没有配置“多主机头”的情况下,Request.ApplicationPath + "对应的aspx文件"这种方式是正常的。
多主机头的情况下:Request.ApplicationPath =""
在第一种情况,放在网站的一个虚拟目录下,得到的是Request.ApplicationPath ="/bms"
我的想法就是无论什么时候,我Redirect以及Windows.Open都能够正常定位到文件。