难以将文本写入C#中的新文件,根路径错误,访问被拒绝

难以将文本写入C#中的新文件,根路径错误,访问被拒绝,c#,visual-studio,file,streamwriter,access-denied,C#,Visual Studio,File,Streamwriter,Access Denied,我正在尝试将文本写入visual studio项目中的文件。如果文件不存在,我想在项目中创建它 当我尝试实现将文本写入新文件的方法时,出现以下错误: 异常详细信息:System.UnauthorizedAccessException:访问 路径“C:\Windows\SysWOW64\inetsrv\ErrorLog”被拒绝 鉴于安装程序的每台计算机上的根路径不同,我如何确保此方法可以/将在用户的项目中创建新的文本文件?(不知道根URL) 调用时应将文本写入文件的方法 /// <s

我正在尝试将文本写入visual studio项目中的文件。如果文件不存在,我想在项目中创建它

当我尝试实现将文本写入新文件的方法时,出现以下错误:

异常详细信息:System.UnauthorizedAccessException:访问 路径“C:\Windows\SysWOW64\inetsrv\ErrorLog”被拒绝

鉴于安装程序的每台计算机上的根路径不同,我如何确保此方法可以/将在用户的项目中创建新的文本文件?(不知道根URL)

调用时应将文本写入文件的方法

    /// <summary>
    /// Logs a message to a file.
    /// </summary>
    /// <param name="msg">
    /// The message.
    /// </param>
    public void LogMessageToFile(string message)
    {
        TextWriter tw = new StreamWriter("ErrorLog");
        tw.WriteLine(message);
        tw.Close();
    }
//
///将消息记录到文件中。
/// 
/// 
///信息。
/// 
公共无效日志消息文件(字符串消息)
{
TextWriter tw=新的StreamWriter(“错误日志”);
tw.WriteLine(消息);
tw.Close();
}
任何帮助都将不胜感激

提前感谢您

如果这是一个Web项目(ASP.NET),那么您应该将日志文件写入标准文件夹中,前提是它们位于根站点文件夹下。默认情况下,出于安全原因,您无法在根文件夹外写入

public void LogMessageToFile(string message)
{
    // Get the physical path corresponding to the root folder of your site plus APP_DATA
    string appData = Server.MapPath("~/APP_DATA");

    // Create the log file name
    string logFile = Path.Combine(appData, "ErrorLog.txt");

    // Append to the log file and close/dispose the stream
    using(StreamWriter aw = new StreamWriter(logFile, true))
    {
        sw.WriteLine(message);
    }
}
当代码(数据库文件、日志文件和其他数据文件)需要读/写权限时,将使用根文件夹下的文件夹APP_DATA。

还请注意,应在using语句中包含StreamWriter,以确保在出现异常或其他写入问题时正确关闭。

我突然遇到了相同的问题,尽管它工作正常。经过一些检查和尝试,结果表明,防病毒软件是导致此问题的原因:拒绝访问文件。我暂时停止了防病毒,并且无论文件位于何处,都不会拒绝任何访问。

请共享该方法的代码。如果创建的文件没有路径,则将在Exe文件所在的执行路径文件夹中创建该文件。以管理员身份运行该程序;)这可能是解决办法。这是一个很好的建议,我直到现在才真正考虑过,但我确实需要能够在非管理帐户上执行此操作。为什么不写入%AppData%文件夹,这是应用程序数据的逻辑位置,不需要管理员权限即可写入,并且对所有计算机都一样?谢谢!这太完美了。