本来是想学习下IHttpAsyncHandler接口的,然后就打开VS2008,快速点击“文件”-->“新建”-->"网站",然后新建一个CometSQL的网站,再在网站下面新建三个类:ProcessAsyncHandler.cs、ProcessAsyncResult.cs、ProcesssMessageHandler.cs,这三个类分别继承自IHttpAsyncHandler、IAsyncResult以及IHttpHandler。本来搞到这儿貌似一切没问题,可是下面调试的时候,麻烦来了,我在ProcessAsyncHandler类中敲入以下代码:

 public class ProcessAsyncHandler : IHttpAsyncHandler
{
public static List<ProcessAsyncResult> Queue;

static ProcessAsyncHandler()
{
Queue = new List<ProcessAsyncResult>();
}

#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中配置的话,那么我利用如下节点来配置:

<add verb="GET,POST" path="ProcessMessageHandler.cs" type="MyComet.MyMessageHandler,MyComet" validate="false"/>

 始终不正确,一直提示找不到文件。这就怪了......................

其实,发生这种事情的原因,就是因为这三个类没有在同一个程序集下面,解决的方法很简单,就是创建项目的时候,选择“文件”-->“新建”-->"项目",在弹出的对话框中选择“Asp.net web 应用程序”即可。

posted on 2011-11-08 23:15  程序诗人  阅读(467)  评论(0编辑  收藏  举报