Mas*_*r_T 3 c# asp.net iis asp.net-mvc nlog
I have a library written in C# that performs various operations and uses NLog for logging. Currently, it is used in conjunction with a WinForms GUI to operate and everything works fine.
I have been asked to develop a new web-based interface to replace the old WinForms one, and I've chosen ASP.net MVC5.
问题是,当我从使用 记录某些内容的库中调用任何方法时NLog,我的 ASP.net 应用程序会中断:页面之间的加载时间变得非常长(约 30 秒左右)并且所有状态都会丢失(TempData并且ViewData字典被清空) 。
但是,如果我在注释了该方法中的所有调用之后从库中调用相同的方法NLog,那么一切都会顺利!
为什么会发生这种情况?为什么NLog我的 ASP.net MVC 应用程序被终止?这是 NLog 配置:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="logs\Service.log" keepFileOpen="false"
layout="${longdate} ${level} ${message} ${exception:format=tostring}"
archiveFileName="logs\Service.{#}.log"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="30"
/>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
在你匆忙写下明显的建议之前,请注意以下重要事项:
写这篇文章是为了进一步澄清,因为朱利安的回答确实解决了问题,但我仍然不知道为什么会发生问题。
从那时起,我发现了,所以这里是:
基本上,通过不指定绝对路径,日志文件被写入应用程序工作目录中。在 ASP.net Web 应用程序中,此目录是部署网站的目录。这就产生了一个巨大的问题:站点的主目录不断被 IIS 监视以检测更改。当NLog将日志文件写入此目录时,IIS会检测到更改的文件,将其解释为正在重新部署的站点,并重新启动整个Web应用程序。
所以基本上,在每一个新的日志行中,我的应用程序都会从头开始重新启动!难怪表现如此糟糕!
TL;DR:不要向部署 ASP.net 网站的顶级目录写入任何内容。
| 归档时间: |
|
| 查看次数: |
1265 次 |
| 最近记录: |