Server.MapPath (string sFilePath) 신문은 아직 개체 참조 실례를 이상 도착할 것이다

System.Web.HttpContext.Current.Server.MapPath(string sfilePath)는 가상 경로 1개씩을 물리적 경로.이 반드시 aspx 또는 MVC 중 Action 호출 되는데, 즉 반드시 HttpContext.Current 대상이 있다.근데 것 같은데 스레드 작업 중 만약 호출 되었다System.Web.HttpContext.Current.Server.MapPath(string sfilePath)곧 신문 이상 않았기 때문에 HttpContext.Current 대상.

System.AppDomain.CurrentDomain.BaseDirectory: 应用程序根路径, 在没有HttpContext.Current对象时可以使用

이 문제는 전에 만난 MVC 쓸 것이다 Controller 중 Action 가서 호출 돼, 그러나 인 글로벌 있는 Application_Start 호출System.Web.HttpContext.Current.Server.MapPath(string sfilePath) 하면 '아직 개체 참조 설정 대상이 될 때까지 실행 "이상 때문에 반드시 쓰다System.AppDomain.CurrentDomain.BaseDirectory가져오기 루트 경로 다시 장미 위에 원하는 파일 경로와 파일 이름 될.
//string sLogPath = System.Web.HttpContext.Current.Server.MapPath("/Log/PaymentLog/AlipayLog/" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
string sLogPath = System.AppDomain.CurrentDomain.BaseDirectory.ToString() +"/Log/PaymentLog/AlipayLog/" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
using (FileStream fileStream = new FileStream(sLogPath, FileMode.Create, FileAccess.ReadWrite))
          {
              using (StreamWriter writer = new StreamWriter(fileStream))
              {
                      //todo:비즈니스 논리
              }
          }

글쓴이 Myung 작성일 2015-01-16 21:09