c# - App_Data 没有访问权限

标签 c# asp.net file-permissions unauthorized

我正在完成我的网络项目并添加了一些错误日志功能。它在 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(我正在使用)中执行此操作。

最佳答案

这确实是你需要做的。在您的开发机器上,IIS(或 IIS express)可执行文件对您的 App_Data 具有写权限。目录。在生产机器上,默认情况下您通常不会这样做。只有一个解决方案,那就是授予 IUSR_MachineName用户对目录的写权限。只要您知道这意味着在同一 IIS 实例中运行的其他网站也可能会写入该目录,这从根本上来说并没有错。

关于c# - App_Data 没有访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077122/

相关文章:

c# - 站点使用来自错误目录的文件背后的代码?

python - '权限错误: [Errno 13] Permission denied' after running a python script using a batch file

linux - 将 Linux 文件权限分配给多个用户

c# - C# 组合框上的 KeyPress 事件

c# - 数据访问库返回数据集或对象

c# - 将SQL日期时间格式转换为字符串

linux - Ubuntu中`/var/www`文件夹的默认权限

c# - 查找 "Dead code"

c# - 列表中的最大日期时间

c# - 从页面读取 XML 响应