ASP.NET 4.6.2 Web Forms应用中NLog AspNetRequest布局渲染器无输出求助
解决ASP.NET 4.6.2 Web Forms中NLog AspNetRequest渲染器返回空值的问题
- 必须安装适配ASP.NET Framework的NLog.Web.AspNet包,不要使用NLog.Web.Core(适配.NET Core),确保包版本与NLog主包一致。
- 注册NLog的ASP.NET HTTP模块:
- 代码方式:在
Global.asax的Application_Start方法中添加NLog.Web.NLogModule.Register(); - Web.config配置方式:在
<system.webServer>节点下添加模块注册:<system.webServer> <modules> <add name="NLog" type="NLog.Web.NLogHttpModule, NLog.Web" /> </modules> </system.webServer>
- 代码方式:在
- 确保代码运行在HTTP请求上下文中:如果是在后台线程、
Application_Start等无HttpContext的场景调用,AspNetRequest系列渲染器会返回空值,必须在页面生命周期、HttpHandler等有请求上下文的环境中使用。 - 检查渲染器使用细节:
${aspnet-request:header=Referer}拼写正确(注意是Referer不是Referrer),但只有当请求确实携带Referer头时才会有值${aspnet-appbasepath}返回应用根路径,需确保请求上下文存在
- 代码配置NLog时,可显式启用ASP.NET集成:
var config = new NLog.Config.LoggingConfiguration(); // 添加你的dbTarget等配置 config.Variables["aspnet-request-is-available"] = "true"; NLog.LogManager.Configuration = config;
内容的提问来源于stack exchange,提问作者tnk479
相关产品推荐
相关产品推荐

