IIS FTP 7.5 Extensibilidade (iftPlogProvider e falhas de FTP de registro no log de eventos)

StackOverflow https://stackoverflow.com/questions/2032198

  •  19-09-2019
  •  | 
  •  

Pergunta

Alguém está familiarizado com a extensibilidade do FTP 7.5 no IIS sabe o que eu poderia estar fazendo de errado?

Estou tendo problemas sérios para que a implementação do iftPlogProvider funcione corretamente para o log de registro personalizado. Tudo o que quero fazer é registrar falhas além de um limiar estático para o registro de eventos e ter coleta de lixo de vez em quando. Tentei trabalhar com um dicionário genérico e o provedor sem sorte, e agora mesmo esse código simples de código que não consigo trabalhar. O provedor nem está criando o log de eventos no código de código abaixo (ou usando -o se eu criar antes). Então agora estou profundamente confuso.

Eu sigo as instruções para registrar a assembléia depois de ser assinada no VS e posso confirmar que ele é adicionado ao GAC. Adicioná -lo ao IIS 7.5 através da opção Register Provedores personalizados também parece estar bem.

Qualquer ajuda com sugestões específicas seria muito apreciada, como mesmo com o excelente conjunto de tutoriais de Robert McMurray, ainda estou tendo esses problemas. Estou executando isso em uma caixa R2 de 2008, a propósito, usando a interface para o código gerenciado.

Stub abaixo:

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);
    }
}
Foi útil?

Solução

Eu tive os seguintes problemas:

1) Eu tinha um nome de classe incorreto no meu registro desta assembléia no IIS:

FtPLOGGING.FTPLOGDEMO, FTPLOGGINGDEMO, versão = 1.0.0.0, cultura = neutro, publicKeyToken =

2) Eu não de perto Siga o conselho de Robert ao registrar a Assembléia. Deixei a caixa de seleção verificada, e isso a manteve como um provedor de autenticação, que esse exemplo de código não é. Em vez disso, deixei a autenticação básica habilitada, a autenticação anônima desativada (no meu caso) e sem controle A caixa mencionada no tutorial - 'Limpe a caixa de seleção FTPLOGGINGDEMO na lista de provedores.'

3) Eu não estava usando o APPCMD (ou modificando a seção apropriada no ApplicationHost.config diretamente) para atualizar a seção de provedores personalizados no applicationhost.config

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

Fazer essas três coisas corrigiu o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top