Методы веб-службы ведения журналов IIS 7 - PullRequest
7 голосов
/ 24 января 2012

У меня есть веб-служба (не служба WCF), размещенная в IIS 7, у веб-службы есть два метода: method1 и method2.

Я хочу провести различие между запросами для method1 по сравнению сзапросы на метод 2, без изменения кода веб-службы.

В журналах IIS 7 я вижу запросы к веб-службе, URL веб-службы регистрируется в поле «cs-uri-stem»,но поле "cs-uri-query" пусто.

Есть ли возможность регистрировать запросы на методы веб-службы без изменения кода веб-службы?

Ответы [ 3 ]

3 голосов
/ 24 января 2012

Вы можете регистрировать все входящие запросы в различных методах конвейера обработки.Например, добавьте обработчик для BeginRequest в ваш Global.asax:

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
}
1 голос
/ 04 апреля 2017

Спустя годы мне пришлось посетить 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>
0 голосов
/ 10 декабря 2013

Официальная статья от Microsoft: http://support.microsoft.com/kb/313437

1 - Запустите диспетчер служб IIS.

2 - Разверните имя сервера, а затем разверните веб-сайты или FTP-сайты.,Щелкните правой кнопкой мыши веб-сайт или FTP-сайт, на котором вы хотите включить ведение журнала, а затем нажмите «Свойства».

3- Откройте вкладку «Веб-сайт» или вкладку «FTP-сайт».

4- Установите флажок «Включить ведение журнала».

5- В поле «Активный формат журнала» выберите нужный формат.

6 - Нажмите «Свойства» и укажите параметрычто ты хочешь.Например, если вы используете расширенный формат файла журнала W3C, выполните следующие действия:

a.Если вы работаете с IIS 6.0, перейдите на вкладку Общие.Если вы работаете с IIS 5.0 или IIS 4.0, перейдите на вкладку Общие свойства.Укажите расписание, которое вы хотите использовать для создания новых файлов журнала.Например, чтобы создавать новый файл журнала каждый день, нажмите Ежедневно.

b.Если вы хотите использовать местное время, установите флажок Использовать локальное время для именования файлов и ролловера.

Примечание. Полночь по местному времени используется для всех форматов файлов журнала, кроме расширенного формата файла журнала W3C.По умолчанию в расширенном формате файла журнала W3C используется всемирное координированное время в полночь (среднее время по Гринвичу).Чтобы использовать полночь по местному времени, нажмите, чтобы установить флажок Использовать местное время для именования файлов и ролловеров.

c.Если вы используете IIS 6.0, перейдите на вкладку Дополнительно.Если вы используете IIS 5.0 или IIS 4.0, перейдите на вкладку Расширенные свойства.

d.Укажите параметры, которые вы хотите.Например, укажите свойства, перечисленные в разделе «Настройка данных».Нажмите OK.

e.Нажмите ОК.

...