2017-08-27 2 views
0

ich zur Zeit (für persönliche Zwecke nur) untersuche, ob es möglich ist, einen Filtertreiber zu schreiben, die unter HTTP.sys um sitzen Anfragen abzufangen.Ist HTTP.sys ein Filter (niedriger/höher) oder ein Funktionstreiber (FDO für ein PDO)?

Die Idee ist, zu untersuchen, ob es möglich ist, den 503 Service Unavailable Bildschirm außer Kraft zu setzen (weil es scheint, es ist unmöglich, sie außer Kraft zu setzen oder ändern).

Das Problem ist ich bin mir nicht sicher, wie HTTP.sys implementiert ist, ob es ein Filtertreiber ist, der unter einem Netzwerktreiber sitzt oder ob HTTP.sys von einem virtuellen Gerät verwendet wird.

+0

'http.sys' gar nicht wdm Fahrer ist. es hat Vermächtnis. Sie können in der Gerätestruktur anzeigen, dass ['AddDevice'] (https://msdn.microsoft.com/en-us/library/windows/hardware/ff540521 (v = vs.85) .aspx) in http.sys 0 ist - also nicht wdm – RbMm

Antwort

0

Ich denke, es ist nicht möglich, die 503 Fehlerantwort von http.sys.Looking unter der http 2 api reference zu überschreiben, können wir nur Ausführlichkeit überschreiben. Der http.sys-Treiber wartet auf HTTP-Anfragen und übergibt sie an den Dienst, der auf IP hostname: port combination wartet.

Sie können 503 von iis Seite überschreiben, aber nicht von http.sys. So ein einfacher Trick (nicht so gut) ist die Einrichtung eines ARR + UrlRewrite Reverse Proxy und wenn Ihr Back-End-Dienst 503 wirft, können Sie benutzerdefinierte 503 werfen vom Frontend wie this.

www.example.com:80 => exampleweb: 80 => localhost: 8080 (Ist-Website).

Und Ihre eigentliche Website ist auf Port 8080. Wenn es 503 wirft, dann können Sie benutzerdefinierte 503 von exampleweb

Aber das wird noch geben 503 Fehler, wenn das Frontend geht nach unten werfen, aber wenn es nur als ein verwendet wird Reverse-Proxy, dann ist das sehr unwahrscheinlich. Wie ich schon sagte, ist das definitiv kein guter Weg, aber vielleicht besser, als einen Filtertreiber zu schreiben.

+0

Danke für Ihre Eingabe. In meinem Fall, was ich getan habe (für die Produktion), ist ein weiterer Anwendungspool, den wir auf Anforderung wechseln, wann immer wir Wartung auf unserer Seite planen (da 503 normalerweise auftreten, weil kein Anwendungspool verfügbar ist). Ich verstehe, dass es verschiedene (und besser verwaltete) Wege geben kann, das Problem zu lösen; Aber im Moment experimentiere ich nur und sehe, was es braucht, um einen Filtertreiber für http.sys zu implementieren –

0

Ich glaube, IIS erlaubt es Ihnen nicht, 503 (und einige andere) zu überschreiben ... aber was Sie tun können, ist httpd davor zu schlagen und die reverseproxy & Rewrite-Module zu verwenden, um die Antwort zu ändern.

Etwas wie folgt aus:

  • Set IIS auf einigen internen Ports, ex hört. 8080, 4434 .. was auch immer Sie
  • einrichten httpd vor ihm müssen sich auf die Ports, die Sie wollen, ex hört. 80 und 443
  • Reverse Proxy-Regeln einrichten, um alle Anfragen zu entsprechend weiterleiten, ab. 80-> 8080 und 443-> 4434
  • RewriteRules Richten Sie die Antwort zu ändern, wenn es sich um eine 503
Verwandte Themen