Estensibilità IIS FTP 7.5 (IftPlogProvider e errori di FTP di registrazione nel registro degli eventi)

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

  •  19-09-2019
  •  | 
  •  

Domanda

Qualcuno abbastanza familiarità con l'estensibilità FTP 7.5 in IIS sa cosa potrei fare di sbagliato?

Ho seri problemi a ottenere un'implementazione di IftPlogProvider per funzionare correttamente per la registrazione personalizzata. Tutto quello che voglio fare sono i guasti del registro oltre una soglia statica al registro degli eventi e avere una raccolta di immondizia ogni tanto. Ho provato a lavorare con un dizionario generico e il fornitore senza fortuna, e ora anche questo semplice bit di codice non riesco a lavorare. Il provider non sta nemmeno creando il registro degli eventi nello stub di codice di seguito (o lo utilizza se lo creo in anticipo). Quindi ora sono profondamente confuso.

Seguo le istruzioni per registrare l'assemblaggio dopo che è stato firmato dall'interno di VS e posso confermare che viene aggiunto al GAC. Aggiungendolo a IIS 7.5 tramite l'opzione dei provider personalizzati del registro sembra andare bene.

Qualsiasi aiuto con suggerimenti specifici sarebbe molto apprezzato, poiché anche con l'eccellente set di tutorial di Robert McMurray sto ancora avendo questi problemi. A proposito, sto eseguendo questo su una scatola R2 del 2008, usando l'interfaccia per il codice gestito.

Stub sotto:

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);
    }
}
È stato utile?

Soluzione

Ho avuto i seguenti problemi:

1) Avevo un nome di classe errato nella mia registrazione di questa assemblea in IIS:

FtPlogging.ftPlogdemo, ftPloggingDemo, versione = 1.0.0.0, cultura = neutrale, publicKeyToken =

2) io non da vicino Segui i consigli di Robert durante la registrazione dell'Assemblea. Ho lasciato la casella di controllo controllata e questo la ha mantenuto come provider di autenticazione, cosa che questo campione di codice non è. Ho invece lasciato abilitato l'autenticazione di base, autentica anonima disabile (nel mio caso) e incontrollato La casella menzionata nel tutorial - "Cancella la casella di controllo FtPloggingDemo nell'elenco dei provider."

3) Non stavo usando APPCMD (o modificando direttamente la sezione appropriata in applicationhost.config) per aggiornare la sezione Provider personalizzati in applicationHost.config

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

Fare queste tre cose ha risolto il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top