难以将文本写入C#中的新文件,根路径错误,访问被拒绝
我正在尝试将文本写入visual studio项目中的文件。如果文件不存在,我想在项目中创建它 当我尝试实现将文本写入新文件的方法时,出现以下错误: 异常详细信息:System.UnauthorizedAccessException:访问 路径“C:\Windows\SysWOW64\inetsrv\ErrorLog”被拒绝 鉴于安装程序的每台计算机上的根路径不同,我如何确保此方法可以/将在用户的项目中创建新的文本文件?(不知道根URL) 调用时应将文本写入文件的方法难以将文本写入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
/// <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%文件夹,这是应用程序数据的逻辑位置,不需要管理员权限即可写入,并且对所有计算机都一样?谢谢!这太完美了。