Frage


ich, dass RAN auf IIS6 einen alten ISAPI-Filter ersetzt werden soll. Dieser Filter prüft, ob die Anforderung der besonderen Art ist, manipuliert dann den Header und setzt sich mit der Anfrage. Zwei-Header werden in der Manipulation Methode hinzugefügt, dass ich für eine andere spezielle ISAPI Modul aufrufen.
Also ich habe ISAPI C ++ Code wie:

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;
}

Ich möchte jetzt dieses ISAPI-Filter als Managed-Modul für den IIS7 neu zu schreiben. Also ich habe so etwas wie folgt aus:

private void OnMapRequestHandler(HttpContext context)
{
    ManipulateHeaderInSomeWay(context);
}

Und was nun? Der Antrag scheint nicht zu tun, was es sein sollte?
Ich schrieb bereits ein IIS7 nativen Modul, dass Geräte die gleiche Methode. Aber diese Methode hat einen Rückgabewert, mit dem kann ich sagen, was als nächstes zu tun:

REQUEST_NOTIFICATION_STATUS CMyModule::OnMapRequestHandler(IN IHttpContext *pHttpContext, OUT IMapHandlerProvider *pProvider)
{
    if (DoSomething(pHttpContext))
    {
        return RQ_NOTIFICATION_CONTINUE;
    }
    return RQ_NOTIFICATION_FINISH_REQUEST;
}

So ist es eine Möglichkeit, wieder meinen manipulierte Kontext senden?

War es hilfreich?

Lösung

Ich fand es schließlich. Wie ich in den Kommentaren angegeben füge ich zwei Header auf die Anforderung, die durch meine DLL benötigt werden, die schließlich die Anfrage verarbeitet. Der url Header enthält den Pfad zu der DLL. Also ich habe eine Umleitung auf diese DLL zu tun.
Dies wird mit dem folgenden Code durchgeführt:

private void OnMapRequestHandler(HttpContext context)
{
    ManipulateHeaderInSomeWay(context);
    string url = context.Request.Header["url"]; // path of the DLL

    // now this is the important call!
    context.Server.TransferRequest(url, true);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top