C# – HttpListener Zugriff Verweigert Fehler beheben

„Kolja, ich brauch mal rasch einen HTTP Server.“ – „Klar, kein Problem.“

Oder doch?

HTTPListener httpListener = new HttpListener();
httpListener.Prefixes.Add("http://127.0.0.1:80/");
httpListener.Start(); //Throws Exception

Bling,System.Net.HttpListenerException – Zugriff Verweigert – Error 5  usw.usf. Zunächst dachte ich, dass da doch bestimmt wieder ein Programm sich bereits meinen Port geschnappt hat und ich deswegen den Fehler erhalte. Ich hatte sofort Skype im Verdacht, musste mich aber bei diesem entschuldigen, Skype war nicht der Bösewicht. Der Port war frei und dennoch grinste mich der Fehler an. Anscheinend gibt es da eine Windows-Einschränkung, dass man sich nur mit bestimmten Rechten an diese Ports binden darf. Das erreicht man entweder, indem man sein Programm selbst mit Administratorrechten startet oder aber man führt folgendes Kommando in einer Adminshell aus:

netsh http add urlacl url=http://+:80/ user=DOMAIN\Username listen=yes

Zu beachten ist hierbei, dass der url Parameter exakt dem Präfix des HttpListeners gleicht, sonst wird das nix. Den obigen Code veränderte wie folgt:

HTTPListener httpListener = new HttpListener();
httpListener.Prefixes.Add("http://+:80/");
httpListener.Start();

Nun lief alles wie es sollte. Da man nach dem Spielen aber stets wieder aufräumen sollte, kann man den URLACL Eintrag natürlich auch wieder aus dem System entfernen:

netsh http delete urlacl http://+:80/

Done;

Kolja Engelmann

Technikfan, Freizeitprogrammierer, selbsternannter Toolking und vermutlich größter Drachenfan Deutschlands blogged hier die Lösungen zu IT-Problemen die ihm über den Weg laufen, kleine Softwaretools, nostalgische Anfälle und missbraucht das Ganze gern auch mal als privates Tagebuch und Fotoalbum.

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert