/LM/W3SVC/1/ROOT/trunk-1-129718741958458380spnet-session{current_member} 正在被记录,因为在你的 log4net 定义中你有这样的东西,对吧?
<parameter>
<parameterName value="@user" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%aspnet-session{current_memeber}" />
</layout>
</parameter>
log4net 正在从“%aspnet-session{current_memeber}”中取出“%a”,并认为您想要应用程序域。%a 是转换为应用程序域的 log4net 模式。这真的很烦人,我最近遇到了这个问题,不知道解决办法。
见这里:
https ://logging.apache.org/log4net/log4net-1.2.13/release/sdk/log4net.Layout.PatternLayout.html
找到了解决这个问题的方法。如果您使用 log4net 1.2.11 或更高版本,则像这样声明您的参数应该可以工作。
<parameter>
<parameterName value="@session" />
<dbType value="String" />
<size value="2147483647"/>
<layout type="log4net.Layout.PatternLayout">
<converter>
<name value ="AspNetSessionPatternConverter"/>
<type value="log4net.Layout.Pattern.AspNetSessionPatternConverter"/>
</converter>
<conversionPattern value="%aspnet-session{gwsession}" />
</layout>
</parameter>
我不知道 %a 与 appdomain 短路是否是一个错误,或者您是否应该使用 aspnetsessionpatternconverter 声明您的参数,但如果更新 log4net 文档会很好。希望这对其他人有帮助。