本来是想学习下IHttpAsyncHandler接口的,然后就打开VS2008,快速点击“文件”-->“新建”-->"网站",然后新建一个CometSQL的网站,再在网站下面新建三个类:ProcessAsyncHandler.cs、ProcessAsyncResult.cs、ProcesssMessageHandler.cs,这三个类分别继承自IHttpAsyncHandler、IAsyncResult以及IHttpHandler。本来搞到这儿貌似一切没问题,可是下面调试的时候,麻烦来了,我在ProcessAsyncHandler类中敲入以下代码:
public class ProcessAsyncHandler : IHttpAsyncHandler { public static ListQueue; static ProcessAsyncHandler() { Queue = new List (); } #region IHttpAsyncHandler 成员 public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData) { var sessionID = context.Request["sessionId"]; if (Queue.Find(q => q.SessionId == sessionID) != null) { var index = Queue.IndexOf(Queue.Find(q => q.SessionId == sessionID)); Queue[index].Context = context; Queue[index].Callback = cb; return Queue[index]; } var asyncResult = new ProcessAsyncResult(context, cb, sessionID); Queue.Add(asyncResult); return asyncResult; } public void EndProcessRequest(IAsyncResult result) { var rslt = (ProcessAsyncResult)result; rslt.Context.Response.Write(rslt.Message); rslt.Message = string.Empty; } #endregion #region IHttpHandler 成员 public bool IsReusable { get { return true; } } public void ProcessRequest(HttpContext context) { throw new NotImplementedException(); } #endregion }
没想到在我的界面显示如下:
但是我按F5运行的时候,程序仍然能够运行,只是不能击中断点。
如果说这还需要在web.config中配置的话,那么我利用如下节点来配置:
始终不正确,一直提示找不到文件。这就怪了......................
其实,发生这种事情的原因,就是因为这三个类没有在同一个程序集下面,解决的方法很简单,就是创建项目的时候,选择“文件”-->“新建”-->"项目",在弹出的对话框中选择“Asp.net web 应用程序”即可。