コンパイル済みの 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:
...................