带有lockingModel的Asp.net MVC log4net使会话丢失

时间:2017-01-06 03:17:02

标签: asp.net-mvc log4net

我获得了一个MVC网站,并使用log4net来记录日志。

在Web应用程序中,我将用户信息存储在会话中,在执行一个操作后添加一些信息。然后当我返回主页时会丢失会话(只需输入主页的URL)。

我确信会话丢失了与“Response.Redirect()”或其他内容无关,因为我测试了应用程序并发现它会在我评论lockModel属性后恢复,其值为“log4net.Appender” log4net配置文件中的.FileAppender + MinimalLock。

以下是配置:

<?xml version="1.0"?>
<log4net debug="true">
    <appender name="AllInfoRollingAppender" type="log4net.Appender.RollingFileAppender">
        <file value="bin\\Log\\AllInfo-UniqueBlog-" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <appendToFile value="true" />
        <staticLogFileName value="false" />
        <rollingStyle value="Composite" />
        <datePattern value="yyyy-MM-dd.LOG" />
        <maximumFileSize value="1M" />
        <maxSizeRollBackups value="4" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger: %message%newline%exception" />
        </layout>
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="AllInfoRollingAppender" />
    </root>
</log4net>

所以我认为log4net配置中的“lockingModel”属性会导致此错误,但我不知道原因,并且它不会在那里抛出任何错误,是否有人遇到此错误?我发现这是不可思议的,因为这不应该导致这个问题。

1 个答案:

答案 0 :(得分:0)

你的问题完全不可读。但是我必须检查一些事情。如果会话丢失,请在Session.Redirec()之前或之后进行登录。如果您在会话重定向后记录,则永远不会触发您的代码。重定向结束当前线程。接下来你可以启用log4net调试:

<select id="test"></select>

如果log4net中发生了错误,您将在日志中看到它。