IIS FTP 7.5 Extensibilité (IftPlogProvider et journalisation FTP Échec au journal des événements)

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

  •  19-09-2019
  •  | 
  •  

Question

Quiconque connaît bien l'extensibilité FTP 7.5 dans IIS Sait ce que je pourrais faire de mal?

J'ai du mal à obtenir une implémentation d'IftPlogProvider pour fonctionner correctement pour la journalisation personnalisée. Tout ce que je veux faire, c'est de journaliser les échecs au-delà d'un seuil statique dans le journal des événements et avoir de la collecte des ordures de temps en temps. J'ai essayé de travailler avec un dictionnaire générique et le fournisseur sans chance, et maintenant même ce simple code, je ne peux pas travailler. Le fournisseur ne crée même pas la connexion des événements dans le stub de code ci-dessous (ou l'utilise si je le crée au préalable). Alors maintenant, je suis profondément confus.

Je suis les instructions pour enregistrer l'assemblage après sa signature à partir de VS et je peux confirmer qu'il est ajouté au GAC. L'ajouter à IIS 7.5 via l'option Registre Custom Providers semble également être bien.

Toute aide avec des suggestions spécifiques serait grandement appréciée, car même avec l'excellent ensemble de tutoriels de Robert McMurray, j'ai toujours ces problèmes. Soit dit en passant, je l'exécute sur une boîte R2 2008, en utilisant l'interface pour le code géré.

Stume ci-dessous:

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);
    }
}
Était-ce utile?

La solution

J'ai eu les problèmes suivants:

1) J'ai eu un nom de classe incorrect dans mon enregistrement de cette assemblée dans IIS:

Ftplogging.ftplogdemo, ftploggingdemo, version = 1.0.0.0, culture = neutre, publicKeyToken =

2) je n'ai pas étroitement Suivez les conseils de Robert lors de l'enregistrement de l'assemblée. J'ai quitté la case à cocher, et cela l'a gardé en tant que fournisseur d'authentification, ce que cet échantillon de code n'est pas. J'ai plutôt quitté Basic Auth activé, Disabled Anonymous Auth (dans mon cas), et incontrôlé La case mentionnée dans le tutoriel - «Effacer la case FTPloggingDemo dans la liste des fournisseurs.

3) Je n'utilisais pas AppCMD (ou modifiant la section appropriée dans ApplicationHost.config directement) pour mettre à jour la section des fournisseurs personnalisés dans ApplicationHost.config

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

Faire ces trois choses a résolu le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top