2

コンパイル済みの C# クラス プロジェクトで作成した HTTPModule を使用して、要求値をログに記録し、サード パーティの CGI ショッピング カートを拡張しようとしています。私のモジュールは、asp、asp.net、jpg、および html リクエストでは正常に動作しますが、store.cgi をリクエストするとすぐに、次のエラーが発生します。IIS7 で何か特別なことをしなければなりませんか、それとも HTTPModule は CGI-BIN で実行されている CGI 実行可能ファイルで動作しませんか?

「/cgi-bin」アプリケーションでサーバー エラーが発生しました。

タイプ 'IISWatcher.WatchRequests' を読み込めませんでした。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.Web.HttpException: タイプ 'IISWatcher.WatchRequests' を読み込めませんでした。

ソースコード:


システムを使用する;
System.Collections.Generic の使用;
System.Text を使用します。
System.Web の使用;
System.Messaging を使用します。

名前空間 IISWatcher
{
    public class WatchRequests : IHttpModule
    {
        public void Init(System.Web.HttpApplication アプリ)
        {
            app.BeginRequest += 新しい EventHandler(app_BeginRequest);
            app.EndRequest += 新しい EventHandler(app_EndRequest);
        }
        void app_EndRequest(オブジェクト送信者, EventArgs e)
        {
            //HttpApplication app = (HttpApplication)sender;
        }
        void app_BeginRequest(オブジェクト送信者, EventArgs e)
        {
            文字列 strReturn = "\r\n";
            HttpApplication アプリ = (HttpApplication) 送信者;
            文字列 strAddress = app.Request.UserHostAddress;
            文字列 strUrl = app.Request.Url.AbsoluteUri;
            文字列 strQS = app.Request.QueryString.ToString();
            RequestInfo ri = new RequestInfo();
            System.Diagnostics.EventLog.WriteEntry("HttpModule",
                "IpAddress: " + strAddress + strReturn + "URL:" + strUrl);
            System.Messaging.MessageQueue msq = new MessageQueue(@".\private$\HttpModuleQueue");
            ri.AbsoluteUri = strUrl;
            ri.IPAddress = strAddress;
            ri.QueryString = strQS;
            msq.Send(ri);
        }

        public void Dispose()
        {
        }
    }
    パブリック クラス RequestInfo
    {
        パブリック文字列 IPAddress;
        公開文字列 AbsoluteUri;
        公開文字列 QueryString;
    }
}

IIS7 の Web.config:

...................

4

0 に答える 0