【发布时间】:2014-03-19 08:26:53
【问题描述】:
我正在使用 FiddlerCore 处理本地请求。所有会话都在Queue<Session> 中排队并由BackgroundWorker 处理。处理完成后,我想通过使用已处理的会话发送响应,指示处理成功或失败。问题是我收到了太晚了,我们已经在与服务器对话了错误。
这是 FiddlerCore 函数:
private static void FiddlerApplication_BeforeRequest(Session session)
{
if (session.hostname.ToLower() == "localhost")
{
LogHelper.WriteFormat("Local request {0} enqueued", session.id);
sessionsQueue.Enqueue(session);
if (!sessionWorker.IsBusy)
sessionWorker.RunWorkerAsync();
}
}
这是线程函数:
private static void sessionWorker_DoWork(object sender, DoWorkEventArgs e)
{
while (sessionsQueue.Count > 0)
{
if (sessionWorker.CancellationPending)
{
e.Cancel = true;
sessionsQueue.Clear();
LogHelper.Write("Shutting down, all requests canceled");
break;
}
currentSession = sessionsQueue.Dequeue();
LogHelper.WriteFormat("Processing request ID {0}", currentSession.id);
ProcessSession();
}
}
这是ProcessSession函数末尾的代码:
{
...
currentSession.bBufferResponse = true;
currentSession.utilCreateResponseAndBypassServer();
currentSession.oResponse.headers.HTTPResponseStatus = "200 OK";
currentSession.oResponse["Content-Type"] = "text/html; charset=UTF-8";
currentSession.oResponse["Cache-Control"] = "private, max-age=0";
currentSession.utilSetResponseBody(responseBody);
}
我试图篡改会话的计时器和状态,但没有成功。
【问题讨论】:
标签: c# session fiddler session-timeout fiddlercore