Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 写一个日志文件_C#_Asp.net_Logging - Fatal编程技术网

C# 写一个日志文件

C# 写一个日志文件,c#,asp.net,logging,C#,Asp.net,Logging,我最近有个问题。我可以在我的intetpub/wwwroot/文件夹中上载文件 但我不能在同一个文件夹中写入日志文件 我拥有网络服务的所有权限。一切都在我的服务器上 DirectoryInfo di = new DirectoryInfo(~/); // Get a reference to each file in that directory. FileInfo[] fiArr = di.GetFiles(); string strLogText = di; // Create a

我最近有个问题。我可以在我的intetpub/wwwroot/文件夹中上载文件

但我不能在同一个文件夹中写入日志文件

我拥有网络服务的所有权限。一切都在我的服务器上

DirectoryInfo di = new DirectoryInfo(~/);

// Get a reference to each file in that directory.
FileInfo[] fiArr = di.GetFiles();


string strLogText = di;

// Create a writer and open the file:
StreamWriter log;

if (!System.IO.File.Exists("C:\\inetpub\\wwwroot\\logfile.txt"))
{
    log = new StreamWriter("C:\\inetpub\\wwwroot\\logfile.txt");
}
else
{
    log = System.IO.File.AppendText("C:\\inetpub\\wwwroot\\logfile.txt");
}

// Write to the file:
log.WriteLine(DateTime.Now);
log.WriteLine(strLogText);
log.WriteLine();

// Close the stream:
log.Close();
错误是访问被拒绝


它在本地工作,但在我的服务器上不工作。在文件夹Inetpub上,我只需要允许写入网络服务?这很奇怪,因为我可以上传文件,并且已经启用了写入功能,这取决于服务器的版本(windows 2008及更高版本),该目录具有额外的写入保护

我强烈建议您查看以进行日志记录。它为您提供了许多选项,包括内存或数据库备份,并收集了许多您可能需要的额外数据


此外,为写访问打开各种物理目录位置是一个巨大的安全禁忌。

如果出现异常,您的代码不会关闭日志文件上的流,这肯定是不好的

您应该在流周围使用
using
语句,以便在任何情况下关闭流,并在异常情况下处理流

正如Chris所建议的,我绝对会选择一个日志框架,而且我也会避免在
wwwroot
文件夹中编写

ELMAH、NLog或Log4Net是好的、简单的替代方案,比您现在正在做的任何自定义日志记录都要好得多,这些技术/库的最大优点是,您只需编辑配置文件即可在运行时更改行为,无需重建或重新部署任何内容

我最喜欢的实际上是Log4Net,请查看下面的示例,了解如何使用它:


在服务器上,web应用程序是否在具有备用凭据的应用程序池下运行,而不是在普通网络服务帐户下运行?如果您还没有这样做,请尝试打开以查看哪些用户正在尝试访问该文件。

在这种情况下定义“不能”。你怎么试?是密码吗?显示代码。你有错误吗?显示错误。我编辑了我的第一篇文章。我确信你有理由实现自己的日志记录。然而,您可能想查看log4net——您的服务器上是否有专门连接日志文件的东西?