问题:我正在尝试在 MVC 应用程序中使用 JSNLog(目标框架:.NET 4.5)。我收到“当前上下文中不存在 JSN 日志”错误。
我尝试安装JSNLog 2.28.0,但它显示:
无法安装包“JSNLog 2.28.0”。您正在尝试将此包安装到以“.NETFramework,Version=v4.5”为目标的项目中,但该包不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请联系包作者。
所以,我已经安装了以下这些用于日志记录的包:
- JSN 日志 v-2.27.1
- JSNLog.Log4Net v-2.27.1
- log4Net v-2.0.8
我之前在 .NET Framework 4.6.1 上做过同样的事情,当时它很容易工作。有什么我想念的吗?
我的步骤是:
- 从 VS 2017 创建了一个 MVC 应用程序。
- 安装了 log4net 并添加了服务器端日志记录。(这工作正常)
- 下载 JSNLog & JSNLog.Log4Net
- JSNLog 配置会自动添加到 Web.Config 中。
- 在视图中添加了@Html.Raw(JSNLog.JavascriptLogging.Configure())。(这仅适用于 .NET 4.6.1)。
- 为 JSN 日志添加了我自己的脚本。
我的示例代码如下:
我在 Index.cshtml 页面上收到以下错误:
这是我在 Web.Config 中的 JSNLog 配置:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<section name="jsnlog" type="JSNLog.ConfigurationSectionHandler, JSNLog" requirePermission="false" /><sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<!-- prevent log4net from locking the file, otherwise integration tests cannot remove it for each test-->
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<file value="Logs\log.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%utcdate | %level | %logger | %message%newline" />
</layout>
</appender>
<root>
<level value="TRACE" />
<appender-ref ref="RollingFile" />
</root>
</log4net>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<httpHandlers>
<add verb="*" path="*.logger" type="JSNLog.LoggerHandler, JSNLog" />
</httpHandlers>
</system.web>
<jsnlog productionLibraryPath="~/Scripts/jsnlog.min.js">
</jsnlog><common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Universal.Log4NetFactoryAdapter, Common.Logging.Log4Net.Universal" />
</logging>
</common>
我尝试使用 .NET 4.6.1 项目中的 jsnlog dll。
以前的错误在这里消失了,但现在给出了这个错误:POST http://localhost:xxxxx/jsnlog.logger 500 (Internal Server Error)