2

任何非常熟悉 IIS 中的 FTP 7.5 可扩展性的人都知道我可能做错了什么吗?

我在让 IFtpLogProvider 的实现正常工作以进行自定义日志记录时遇到严重问题。我要做的就是将超出静态阈值的故障记录到事件日志中,并且每隔一段时间进行一次垃圾收集。我试过使用通用字典和提供者,但没有运气,现在即使是这个简单的代码我也无法工作。提供者甚至没有在下面的代码存根中创建事件日志(或者如果我事先创建它,则使用它)。所以现在我很困惑。

在从 VS 中签名后,我按照说明注册程序集,我可以确认它已添加到 GAC。通过注册自定义提供程序选项将其添加到 IIS 7.5 似乎也很好。

任何有关具体建议的帮助都将不胜感激,因为即使使用 Robert McMurray 的优秀教程集,我仍然遇到这些问题。顺便说一句,我正在使用托管代码的接口在 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);
    }
}
4

1 回答 1

2

我有以下问题:

1)我在 IIS 中注册此程序集时的类名不正确:

FtpLogging.FtpLogDemo,FtpLoggingDemo ,version=1.0.0.0,Culture=neutral,PublicKeyToken=

2)注册程序集时,我没有严格遵循罗伯特的建议。我选中了该复选框,这将其保留为身份验证提供程序,而此代码示例不是。我改为启用基本身份验证,禁用匿名身份验证(在我的情况下),并取消选中教程中提到的框 - '清除提供程序列表中的 FtpLoggingDemo 复选框。

3)我没有使用 AppCmd(或直接修改 applicationHost.config 中的相应部分)来更新 applicationHost.config 中的自定义提供程序部分

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

做这三件事解决了这个问题。

于 2010-01-18T23:09:59.413 回答