tile 发表于 2015-8-17 02:43:07

解决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.可能会提示无法操作文件,必须设置文件的操作权限(可写)。
页: [1]
查看完整版本: 解决IIS文件访问异常——Server.MapPath方法