我想替换一个在iis6上运行的旧的isapi过滤器。此过滤器检查请求是否属于特殊类型,然后操作头并继续请求。在我调用另一个特殊的ISAPI模块所需的操作方法中添加了两个头部。
所以我有ISAPI C++代码,像:
DWORD OnPreProc(HTTP_FILTER_CONTEXT *pfc, HTTP_FILTER_PREPROC_HEADERS *pHeaders)
{
if (ManipulateHeaderInSomeWay(pfc, pHeaders))
{
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
return SF_STATUS_REQ_FINISHED;
}
我现在想将这个isapi过滤器重写为iis7的托管模块。所以我有这样的东西:
private void OnMapRequestHandler(HttpContext context)
{
ManipulateHeaderInSomeWay(context);
}
现在呢?请求似乎没有做它应该做的?
我已经编写了一个实现相同方法的IIS7本机模块。但是这个方法有一个返回值,我可以用它来决定接下来要做什么:
REQUEST_NOTIFICATION_STATUS CMyModule::OnMapRequestHandler(IN IHttpContext *pHttpContext, OUT IMapHandlerProvider *pProvider)
{
if (DoSomething(pHttpContext))
{
return RQ_NOTIFICATION_CONTINUE;
}
return RQ_NOTIFICATION_FINISH_REQUEST;
}
那么,有没有一种方法可以再次发送我被操纵的上下文呢?