string dirRoot = Server.MapPath("~");  在controller下边可以用,是它下边的一个方法。如果我想在其它cs下边根据虚拟路径求物理路径,该怎么做?

解决方案 »

  1.   

    需要传一个HttpServerUtility对象过来。
    然后就可以调用HttpServerUtility.MapPath了。
      

  2.   

    很显而易见,Server是IIS运行后,Web Server创建并且设置的,程序不在Web Server上跑起来,就不存在什么虚拟路径的概念。
      

  3.   


    是在 BLL 层下边访问,也是mvc程序一部分,算在Web Server上吗?
      

  4.   

    我的意思是,无论你在哪里写,这些代码必须能访问到web server传进来的HttpServerUtility对象。
      

  5.   

    谢谢,我照你说的,把它传进去controllerLibraryBLL.BatchDelete(guidArr,albGuidArr, Server);BLL        public static void BatchDelete(string[] guidArr,string[] guidSearch, HttpServerUtilityBase server)
            {
                using (var db = new WEBVODEntities())
                {
                    var documents = db.Library.Where(a => guidSearch.Contains(a.Guid)).ToList();
                    foreach (var doc in documents)
                    {
                        CommonUtils.DeleteDir(server.MapPath('~'+ doc.VirDir));
                    }
                    db.ExecuteStoreCommand("delete from Library where Guid in(" + string.Join(",", guidArr) + ")");   
                }
            }