WCF部署到IIS上之后log4net不记录日志的解决方案
来源:互联网 发布:max485 3.3v单片机 编辑:程序博客网 时间:2024/05/24 05:52
问题及环境:在web项目中直接添加的wcf服务。web项目中增加Global.asax,在Global.asax的Application_Start事件中注册log4net
部署到IIS之后,WCF服务正常运行。w3wp在第一次调用时也已经启动。但是,所有的日志都没有。
//然后,右键CustomService.svc文件-查看标记
protected void Application_Start(object sender, EventArgs e) { log4net.Config.XmlConfigurator.Configure(); }
部署到IIS之后,WCF服务正常运行。w3wp在第一次调用时也已经启动。但是,所有的日志都没有。
于是,在IIS上浏览svc文件。再调用WCF服务时日志正常。
Application_Start在直接调用的时候并没有被执行,只有在浏览svc页面时才被执行了。所以在global中注册log4net只能靠运维部署时来浏览svc来启动日志。
怎么解决呢?
使用自定义ServiceHost
默认的IIS宿主只能创建ServiceHost实例 ,所以在自定义的ServiceHost实例中来注册log4net启动日志记录是最好的选择了。
如下,自定义一个ServiceHost的子类
一个ServiceHostFactory的子类
using System;using System.ServiceModel;using System.ServiceModel.Activation;namespace Test{ public class CustomServiceHostFactory : ServiceHostFactory { protected override ServiceHost CreateServiceHost( Type serviceType, Uri[] baseAddresses) { CustomServiceHost customServiceHost = new CustomServiceHost(serviceType, baseAddresses); return customServiceHost; } } public class CustomServiceHost : ServiceHost { public CustomServiceHost(Type serviceType, params Uri[] baseAddresses) : base(serviceType, baseAddresses) { log4net.Config.XmlConfigurator.Configure(); } protected override void ApplyConfiguration() { base.ApplyConfiguration(); } }}
//然后,右键CustomService.svc文件-查看标记
//在<%@ ServiceHost Language="C#" Debug="true" Service="Test.CustomService" CodeBehind=“Test.CustomService.svc.cs”>中加入
//Factory=“Test.CustomServiceHostFactory”
//即<%@ ServiceHost Language="C#" Debug="true" Service="Test.CustomService" Factory=“Test.CustomServiceHostFactory” CodeBehind=“Test.CustomService.svc.cs”>
//再次部署后,第一次调用IIS上的WCF服务也可以自动启动记录日志了
- WCF部署到IIS上之后log4net不记录日志的解决方案
- WCF 部署到IIS 上
- 远程部署WCF到IIS上
- WCF部署到IIS
- iis 上部署tcp的wcf
- log4net 部署到服务器后无法记录日志
- log4net记录日志,在IIS发布后不记录日志问题解决方案
- WCF 部署在IIS上
- WCF部署到IIS服务器
- CXF项目部署到WebSphere7上不兼容的解决方案
- 在IIS 上部署 WCF 需要注意的几个地方
- asp.net的mvc4部署到IIS上显示404问题的解决方案
- 将WCF部署到IIS上调用报错:由于扩展配置问题而无法提供您请求的页面
- 将WCF部署到IIS上调用报错:由于扩展配置问题而无法提供您请求的页面
- wcf 部署在IIS上,tcp.net
- Log4net记录日志到Oracle 11g
- Log4Net记录日志到SQLServer数据库
- Log4Net(三)之记录日志到数据库
- HTML中fieldset的使用
- Android Framework 深入浅出-HAL, Binder, View System 与 Native Service
- ubuntu下编译lua
- 给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后。
- S3C2440时钟和电源管理
- WCF部署到IIS上之后log4net不记录日志的解决方案
- cocos2dx-更新函数
- 电话架构
- 启动minicom时出现错误"Device /dev/ttyS0 is locked minicom"的解决办法
- Javascript format日期function
- linux下”流氓“清理oracle安装脚本
- GridView自定義分頁---派生類(1)
- 连接sqlserver2000用的字符串连接
- 安装测试web.py-0.37