尝试使用我在编译的 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 { 公共类 WatchRequests:IHttpModule { 公共无效初始化(System.Web.HttpApplication 应用程序) { app.BeginRequest += new EventHandler(app_BeginRequest); app.EndRequest += new EventHandler(app_EndRequest); } void app_EndRequest(对象发送者,EventArgs e) { //HttpApplication app = (HttpApplication)sender; } void app_BeginRequest(对象发送者,EventArgs e) { 字符串 strReturn = "\r\n"; HttpApplication app = (HttpApplication)sender; 字符串 strAddress = app.Request.UserHostAddress; 字符串 strUrl = app.Request.Url.AbsoluteUri; 字符串 strQS = app.Request.QueryString.ToString(); RequestInfo ri = new RequestInfo(); System.Diagnostics.EventLog.WriteEntry("HttpModule", “IP地址:” + strAddress + strReturn + “URL:” + strUrl); System.Messaging.MessageQueue msq = new MessageQueue(@".\private$\HttpModuleQueue"); ri.AbsoluteUri = strUrl; ri.IPAddress = strAddress; ri.QueryString = strQS; msq.Send(ri); } 公共无效处置() { } } 公共类请求信息 { 公共字符串 IP 地址; 公共字符串 AbsoluteUri; 公共字符串查询字符串; } }
IIS7 的 Web.config:
.....................