IIS 7记录Web服务方法
我有一个在IIS 7下托管的Web服务(不是WCF服务),Web服务有两个方法:method1和method2。
我正在寻求区分方法1的请求和方法2的请求,而不修改Web服务代码。
在IIS 7日志下,我可以看到对Web服务的请求,web服务URL在“cs-uri-stem”字段下记录,但“cs-uri-query”字段为空。
无论如何要记录Web服务方法的请求,而不修改Web服务代码?
您可以将所有传入的请求记录在处理管道的各种方法中。 例如,在Global.asax
为BeginRequest
添加一个处理程序:
Application_BeginRequest( object sender, EventArgs e )
{
HttpApplication app = (HttpApplication)sender;
HttpContext ctx = app.Context;
var requestUrl = ctx.Request.Url;
// the uri should be of a form:
// http://yoursite/theservice.asmx/MethodName
}
几年之后,我不得不用数百种方法访问ASMX,并且无法将其转换为WCF。 这是一个ASMX扩展点,它允许您在不访问所有方法的情况下记录方法名称。 在这里,我使用log4net来记录方法名称YMMV
首先,创建一个SoapExtension类:
namespace MyNamespace {
public class WebMethodLogger : SoapExtension
{
private static readonly ILog _log = LogManager.GetLogger(typeof(WebMethodLogger));
public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)
{
return null; //No state
}
public override object GetInitializer(Type serviceType)
{
return null; //No state
}
public override void Initialize(object initializer)
{
//Do nothing
}
public override void ProcessMessage(SoapMessage message)
{
if (message.Stage == SoapMessageStage.AfterDeserialize)
_log.Debug(message.MethodInfo.MethodInfo.Name);
}
}
}
然后,在web.config中注册扩展名:
<system.web>
...
<webServices>
<soapExtensionTypes>
<add type="MyNamespace.WebMethodLogger, MyAssembly"
priority="1"
group="High" />
</soapExtensionTypes>
</webServices>
...
</system.web>
这里是来自microsoft的官方文章:http://support.microsoft.com/kb/313437
1-启动Internet信息服务(IIS)管理器。
2-展开ServerName,然后展开网站或FTP站点。 用鼠标右键单击要启用日志记录的网站或FTP站点,然后单击“属性”。
3-单击网站选项卡,或单击FTP站点选项卡。
4-单击以选中启用日志记录复选框。
5-在“活动日志格式”框中,单击您要使用的格式。
6-单击“属性”,然后指定所需的设置。 例如,如果您使用W3C扩展日志文件格式,请按照下列步骤操作:
一个。 如果您正在运行IIS 6.0,请单击常规选项卡。 如果您正在运行IIS 5.0或IIS 4.0,请单击常规属性选项卡。 指定要用于创建新日志文件的计划。 例如,要每天创建一个新的日志文件,请单击每日。
湾 如果要使用本地时间,请单击以选中使用文件命名和翻转复选框的本地时间。
注意除W3C扩展日志文件格式外,本地时间午夜用于所有日志文件格式。 默认情况下,W3C扩展日志文件格式使用午夜协调世界时(格林尼治标准时间)。 要使用本地午夜时间,请单击以选中使用本地时间进行文件命名和翻转复选框。
C。 如果您正在运行IIS 6.0,请单击“高级”选项卡。 如果您正在运行IIS 5.0或IIS 4.0,请单击扩展属性选项卡。
d。 指定您想要的选项。 例如,指定“自定义数据”部分中列出的属性。 点击确定。
即 点击确定。
链接地址: http://www.djcxy.com/p/10363.html上一篇: IIS 7 Logging Web Service methods
下一篇: Why is collision difficult to effectively compute in graphics engines?