当前位置: 代码迷 >> ASP.NET >> Server.MapPath()方法在项目发布到IIS后出现错误
  详细解决方案

Server.MapPath()方法在项目发布到IIS后出现错误

热度:2664   发布时间:2013-02-26 00:00:00.0
Server.MapPath()方法在项目发布到IIS后出现异常
解决方案中有两个项目:
web项目A,类库B。
项目A中有测试页面 TestWeb.aspx.cs 
类库中有TestClass.cs 
代码如下:

C# code
public class TestClass{   string path = HttpContext.Current.Server.MapPath(@"~/Bin")+@"\";    public string Test()   {       if(!path.Contains(@"/") && !path.Contains(@"\") )       {           throw new Exception("路径出现异常!异常路径为:"+path);        }   }}


TestWeb.aspx.cs 中调用TestClass 类的Test方法
调用代码如下:
C# code
try{   TestClass _tc = new TestClass ();   _tc.Test();}catch(Exception e){   Page.ClientScript.RegisterStartupScript(this.GetType(), "loadactive", "<script>alert('" + ex.Message + "');</script>");}


在VS中和发布到本机IIS中,正常。
其中VS中 调试,看到path的内容为 d:\\...\\...\\...\\TestWeb\\Bin
发布到服务器上后,有内容弹出:

路径出现异常!异常路径为:
C:ABin

注意:这里不是我写错了,弹出的路径中 确实没有 \ 或者 / 符号
发布后的虚拟目录名称为A,我疑惑的是,为何路径不是 C:\A\Bin 或者C:\\A\\Bin 

请高手指点原因,在线等。




------解决方案--------------------------------------------------------
D:盘不在你的 IIS 虚拟路径上吧.
------解决方案--------------------------------------------------------
这个还真没遇到过,关注!
------解决方案--------------------------------------------------------
mappath取的是相对路径,把~去掉,改成相对当前文件的文件路径试试
上一级用 ../文件 当前路径用 ./文件 下一级用 ./路径/文件
------解决方案--------------------------------------------------------
路径出现异常!异常路径为:
C:ABin
出现这样的问题是因为js的问题。

Page.ClientScript.RegisterStartupScript(this.GetType(), "loadactive", "<script>alert('" + ex.Message + "');</script>"); }


这样写错误的。因为c#.js中都是2个\\代表一个\的。
所以你需要

Page.ClientScript.RegisterStartupScript(this.GetType(), "loadactive", "<script>alert('" + ex.Message.Replace("\\","\\\\").Replace("'","\\'") + "');</script>"); }
  相关解决方案