WebForm和WinForm通用的取当前根目录的方法

这里需要注意的就是,如果是在Global.asax中添加计时器,在计时器的处理程序中就不能用Server.MapPath获得网站根目录了。

 

        public static string BasePath
        {
            
get
            {
                System.Diagnostics.Process p 
= System.Diagnostics.Process.GetCurrentProcess();
                
//WebDev.WebServer      visual studio web server
                
//xxx.vhost             Winform
                
//w3wp                  IIS7
                
//aspnet_wp             IIS6
                string processName = p.ProcessName.ToLower();
                
if (processName == "aspnet_wp" || processName == "w3wp" || processName == "webdev.webserver")
                {
                    
if (System.Web.HttpContext.Current != null)
                        
return System.Web.HttpContext.Current.Server.MapPath("~/").TrimEnd(new char[] { '\\' });
                    
else //当控件在定时器的触发程序中使用时就为空
                    {
                        
return System.AppDomain.CurrentDomain.BaseDirectory.TrimEnd(new char[] { '\\' });
                    }
                }
                
else
                {
                    
return System.Windows.Forms.Application.StartupPath;
                }
            }
        }
posted @ 2008-12-19 11:52  Aricc  阅读(1000)  评论(0编辑  收藏  举报