2013-08-06 6 views
0

웹 프로젝트를 완료하고 약간의 오류 로그 기능을 추가했습니다. 예외 정보를 App_Data 폴더의 날짜가 기록 된 파일에 씁니다.App_Data에 대한 액세스 권한이 없습니다.

내 개발 컴퓨터에서이 작업을 수행하면 작동합니다. 하지만 IIS 컴퓨터로 전환하면 작동이 멈추고 UnauthorizedAccessException이 발생합니다.

스택 추적 :

[UnauthorizedAccessException: Der Zugriff auf den Pfad "c:\inetpub\wwwroot\App_Data\Error_Logs\" wurde verweigert.] 
    System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +9726526 
    System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj) +9431442 
    System.IO.Directory.CreateDirectory(String path) +146 
    WerIstWo.Logger.writeToLog(String text) in c:\Users\Teichler\Dropbox\Praktikum\IHK-Projekt\WerIstWo\WerIstWo\Logger.cs:18 
    WerIstWo.NeuerBenutzer.btnSpeichern_Click(Object sender, EventArgs e) in c:\Users\Teichler\Dropbox\Praktikum\IHK-Projekt\WerIstWo\WerIstWo\NeuerBenutzer.aspx.cs:325 
    System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118 
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112 
    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563 

코드 :

오류 세부 정보
 public static void writeToLog(string text) 
     { 
      string date = DateTime.Today.ToShortDateString().ToString(); 
      string path = AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "\\Error_Logs\\"; 

      if (!Directory.Exists(path)) 
      { 
       Directory.CreateDirectory(path); 
      } 

      string fullPath = path + date + ".txt"; 

      if (!File.Exists(path + date)) 
      { 
       File.Create(fullPath).Close(); 
      } 

      using (StreamWriter writer = new StreamWriter(fullPath, true)) 
      { 
       writer.Write(text); 
      } 
     } 

, 그것이 내가이 폴더에이 IUSR_MachineName에 대한 권한을 설정해야한다는 것을 알려줍니다하지만이 있는지 확실하지 않습니다 IIS 5.1에서이 방법을 사용하는 것이 좋습니다.

답변

4

정말 그럴 필요가 있습니다. 개발 컴퓨터에서 IIS (또는 IIS Express) 실행 파일에는 App_Data 디렉토리에 대한 쓰기 권한이 있습니다. 프로덕션 시스템에서는 일반적으로 기본적으로 사용하지 않습니다. 단 하나의 솔루션이 있으며 이는 사용자에게 IUSR_MachineName 사용자에게 디렉토리에 대한 쓰기 권한을 부여하는 것입니다. 동일한 IIS 인스턴스에서 실행되는 다른 웹 사이트가 잠재적으로 해당 디렉터리에 쓸 수 있다는 것을 알고있는 한 근본적으로 잘못된 것은 없습니다.

+1

추가 할 수도 있습니다. 또한 ASPNET 사용자를 폴더 액세스 엔터티에 추가해야 할 수도 있습니다 ... 이것은 내가 아는 한 IIS 5 전용입니다. – LeonidasFett

관련 문제