IIS FTP 7.5 Extensibility (IFtpLogProvider и регистрация сбоев FTP в журнале событий) - PullRequest
2 голосов
/ 09 января 2010

Кто-нибудь, кто хорошо знаком с расширяемостью FTP 7.5 в IIS, знает, что я могу делать не так?

У меня серьезные проблемы с правильной работой реализации IFtpLogProvider для настраиваемой регистрации. Все, что я хочу сделать, - это регистрировать сбои после статического порога в журнале событий и собирать мусор так часто. Я безуспешно пытался работать с универсальным словарем и провайдером, и теперь даже этот простой кусочек кода мне не подходит. Поставщик даже не создает журнал событий в заглушке кода ниже (или не использует его, если я его создаю заранее). Так что теперь я в замешательстве.

Я следую инструкциям, чтобы зарегистрировать сборку после ее подписания из VS, и я могу подтвердить, что она добавлена ​​в GAC. Добавление его в IIS 7.5 с помощью параметра «Регистрация пользовательских провайдеров» также представляется целесообразным.

Любая помощь с конкретными предложениями будет принята с благодарностью, поскольку даже с отличным набором учебных пособий Роберта МакМюррея у меня все еще есть эти проблемы. Я, кстати, запускаю это на коробке 2008 R2, используя интерфейс для управляемого кода.

Заглушка внизу:

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration.Provider;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Diagnostics.Eventing;
using System.Text;
using Microsoft.Web.FtpServer;
using System.IO;

public class test: BaseProvider, IFtpLogProvider
{

    void IFtpLogProvider.Log(FtpLogEntry loggingParameters)
    {
        if (!EventLog.SourceExists("TEST"))
        {
            EventLog.CreateEventSource("TEST", "TEST");
        }

        // Just trying to get anything into this log, like a list of
        // USER attempts or something
        EventLog.WriteEntry("TEST", loggingParameters.Command);

    }

    // Mark an IP address for banning.
    private void BanAddress(string ipAddress)
    {
        EventLog.WriteEntry("TEST", ipAddress, EventLogEntryType.Warning, 9010);
    }
}

1 Ответ

2 голосов
/ 19 января 2010

У меня были следующие проблемы:

1) У меня было неправильное имя класса при регистрации этой сборки в IIS:

FtpLogging.FtpLogDemo, FtpLoggingDemo , версия = 1.0.0.0, культура = нейтральной, PublicKeyToken =

2) Я не внимательно следовал советам Роберта при регистрации сборки. Я оставил флажок установленным, и это сохранило его в качестве поставщика аутентификации, что не является этим примером кода. Вместо этого я оставил базовую аутентификацию включенной, отключил анонимную аутентификацию (в моем случае) и не проверял поле, упомянутое в руководстве - «Снимите флажок FtpLoggingDemo в списке поставщиков».

3) Я не использовал AppCmd ​​(или не изменял соответствующий раздел в applicationHost.config напрямую) для обновления раздела пользовательских провайдеров в applicationHost.config

<customFeatures>
    <providers>
        <add name="FtpLoggingDemo" enabled="true" />
    </providers>
</customFeatures>

Выполнение этих трех вещей устранило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...