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.asaxBeginRequest添加一个处理程序:

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?