有人(不是我)开发了一个网站,它可以访问用C#实现的Web服务。当我在visual studio中运行网站时,项目会自动启动Web服务。在Web服务中,我想将一些信息记录到文件中进行测试。 log4net用于webservice项目,但没有记录任何内容。我承认我不会花太多时间处理log4net,但web.config hsa值看起来应该生成一个文件,但它没有。
因此,我尝试将感兴趣的文本转储到本地驱动器上的文本文件中。
File.AppendAllText(logPath, txt + "\n");
没有错误,也没有任何内容发送到该文件。
我启动网站,而不是Web服务,因此调试器似乎不了解Web服务(因此我不能简单地在Web服务中设置断点)。
我的期望是,出于安全原因,事情的开始只是不允许这样做。我依稀记得,当以这种方式启动时,您的服务也不允许写入磁盘,因此在从visual studio运行时的开发框中,如何将简单文件写入磁盘。
在我看来,这应该很简单。
答案 0 :(得分:0)
首先,您应该调用Web服务,以记录任何内容。您可以使用外部程序,如提琴手或邮差,或编写单元测试。第一次调用后,您可以将visual studio附加到w3wp.exe,以便调试问题。
应该为AppPool的用户授予对日志文件的写入权限。
答案 1 :(得分:0)
我想对上述答案发表评论,但我没有权利。
要设置该用户具有写权限,对于本地开发环境,只需右键单击日志文件夹,选择属性,然后在" security"选项卡,单击"编辑",添加" EveryOne"具有读,写,修改权限。
在生产环境中,您应该选择真正的apppool用户。
答案 2 :(得分:0)
虽然答案很有用,也是正确的,但并不能解决问题。另外,相关,请看:
log4net doesn't create log file when deployed on IIS7
请记住,我选择启动WebSite,并自动启动WebService。这个问题还没有解决,但是,同事烧掉了一些脑细胞,他认为这与Visual Studio如何神奇地启动Web服务以及log4net未初始化有关。如果我自己启动Web服务,则日志记录按配置工作。我仍然在测试上面的建议是否允许将大量内容写入特定目录。