0

我有一个 ASP.Net MVC 5 应用程序,它使用 Ent Lib 6 Logging Application 块。

细节:

  • 我的网站托管在共享托管服务器上。
  • 我们使用 Filezilla(FTP 客户端)发布和下载文件/日志。
  • 在服务器上创建日志文件

问题:

当我尝试使用 FTP 从服务器下载日志文件时,我收到错误消息“550 进程无法访问该文件,因为它正被另一个进程使用。”

在此处输入图像描述

这就是我的 web.config 的样子

 <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>    
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
  </configSections>  
  <appSettings>
    .....
  </appSettings>
  <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
    <listeners>
      <add name="Rolling Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          fileName="C:\ServerPath\Log\Log.txt" footer="" formatter="Text Formatter" header=""
          rollFileExistsBehavior="Increment" rollInterval="Day" timeStampPattern="dd-MM-yyyy"
          asynchronous="false" />
    </listeners>
    <formatters>
      <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          template="{timestamp(local:M/dd/yyyy HH:mm:ss.fff)} ({win32ThreadId}) ({severity}) {message}" name="Text Formatter" />
    </formatters>
    <categorySources>
      <add switchValue="All" name="General">
        <listeners>
          <add name="Rolling Flat File Trace Listener" />
        </listeners>
      </add>
    </categorySources>
    <specialSources>
      <allEvents switchValue="All" name="All Events" />
      <notProcessed switchValue="All" name="Unprocessed Category" />
      <errors switchValue="All" name="Logging Errors &amp; Warnings">
        <listeners>
          <add name="Rolling Flat File Trace Listener" />
        </listeners>
      </errors>
    </specialSources>
  </loggingConfiguration>
  .....
</configuration>

正如预期的那样,如果我更改我的 Web.config(在服务器上)文件锁定被释放,然后我可以下载它,或者如果我等待足够长的时间,那么锁定也会被释放。但当然,这一切都是不可接受的。那么是否可以从服务器实时获取日志?其他选项可能是使用其他一些日志库。

4

1 回答 1

0

如果您偶然发现这个问题,这就是我所观察到的。

因此,经过几天的努力,我得出结论,除非我有第二个 URL 可以通过浏览器公开我的日志文件,否则没有简单或直接的方法来解决这个问题。这很好用,但它确实存在相关的安全风险,因为任何拥有该 URL 的人都可以查看日志内容。

另一种解决方案是要求您的服务提供商提供对服务器的远程访问,这是更安全的方法。

于 2014-02-12T13:42:43.480 回答