解决IIS文件访问异常——Server.MapPath方法

台风天气还得来上班,不过拿人钱财,替人消灾啊。牢骚发完,该上工了!

今天要做一个js请求.net后台读写文件的功能,虽然很久没写.net/c#程序,但是还是很快搞定了,运行vs没问题,但是部署到IIS后,出状况了。

错误信息:

未能找到路径“c:\windows\system32\inetsrv\XXXXXXXXXXXXX”的一部分。  
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息: System.IO.DirectoryNotFoundException: 未能找到路径“c:\windows\system32\inetsrv\XXXXXXXXXXXXXXX”的一部分。


我程序中写的是相对路径,看来vs和IIS的访问路径有差别,在网上找了一会儿,就有办法了。

解决办法:

Server.MapPath获得的路径都是服务器上的物理路径,也就是常说的绝对路径
1、Server.MapPath("/")
注:获得应用程序根目录所在的位置,如 C:\Inetpub\wwwroot\。
2、Server.MapPath("./")
注:获得所在页面的当前目录,等价于Server.MapPath("")。
3、Server.MapPath("../")
注:获得所在页面的上级目录。
4、Server.MapPath("~/")
注:获得当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置,如C:\Inetpub\wwwroot\Example\。


说明:

1.如果不知道使用using,可直接写System.Web.HttpContext.Current.Server.MapPath("/XXXX");

2.可能会提示无法操作文件,必须设置文件的操作权限(可写)。

posted on 2011-08-30 10:30  Jackey_Chen  阅读(1907)  评论(0编辑  收藏  举报