웹 프로젝트를 완료하고 약간의 오류 로그 기능을 추가했습니다. 예외 정보를 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에서이 방법을 사용하는 것이 좋습니다.
추가 할 수도 있습니다. 또한 ASPNET 사용자를 폴더 액세스 엔터티에 추가해야 할 수도 있습니다 ... 이것은 내가 아는 한 IIS 5 전용입니다. – LeonidasFett