Frage

Ich entwickle eine Anwendung, die bisher verwendet Httplistener einen kleinen Standalone-HTTP-Server zur Verfügung zu stellen. Allerdings habe ich vor kurzem entdeckt, dass Httplistener muss als Administrator ausgeführt wird, was möglich sein, nicht immer wird.

Was wäre die beste Alternative? Ich brauche http GET und POST, die beide nicht nur das Lesen / Schreiben von Dateien auf dem Dateisystem, die sie benötigen, benutzerdefinierten .Net Code auszuführen.

Meine Forschung hat bisher Cassini gebracht, aber soweit ich das beurteilen kann, würde ich muss eine benutzerdefinierte Version schreiben. Gibt es noch etwas? In partiular etwas mit der gleichen Oberfläche wie Httplistener, aber das wäre erstaunlich, nicht über Administratorrechte erforderlich!

War es hilfreich?

Lösung

Eine Alternative, die ich gefunden habe, ist C # Webserver auf CodePlex.

„... ein flexibles HTTP-Server, die in .NET-Anwendung eingebettet werden kann. Es ist modular aufgebaut, wo Funktionen hinzugefügt werden mit Modulen. Der Server unterstützt auch REST und alle http Verben ...“

Es hat eine Httplistener-Klasse, die ich System.Net.HttpListener ist ähnlich vorstellen, aber ich habe nicht verwendet entweder einer von ihnen noch so kann ich nicht sicher sein.

Andere Tipps

Eine Lösung hierfür wird von diese andere Frage -. Sie können sich Berechtigungen geben Httplistener als nicht-Admin ausführen

Sie können die App aus einer Befehlsdatei gestartet werden erhalten, die die Berechtigungen sortiert und dann läuft die reale app.

Wie der Kommentar von Will Dean auf Ihrer Post sagt, können Sie den folgenden Befehl netsh ausführen:

netsh http add urlacl url=http://+:8346/ user="NTAuthority\Authenticated Users" sddl="D:(A;;GX;;;AU)"

Ersetzen Sie den ‚http: // +: 8346 /‘. Mit dem Wert, und dies ermöglicht es jeder authentifizierte Benutzer die Webserver auf dem Zielendpunkt laufen

In Bezug auf die Aussage:

  

Ich habe kürzlich entdeckt, dass Httplistener muss als Administrator ausgeführt werden soll

Das ist nicht ganz richtig, und einige der anderen Antworten auf einer der Gründe, berühren, aber es ist eine andere:

  1. Noted von anderen Plakaten: Sie Berechtigungen für einen Nicht-Administrator gewähren können. Gut, aber nicht großartig.
  2. Sie können auf localhost hören, auch auf Port 80, ohne ein Admin zu sein. Hinweis:. Ich erinnere daran, dass nur „localhost“ funktioniert und nicht „127.0.0.1“ ... so sicher sein, dass Sie localhost Ihren Prefixes.Add Anruf übergeben

Wir Versand ein internes Tool, das Entwickler ermöglicht einen HTTP-basierte App-Host auf ihrem PC laufen und wir dachten zunächst Httplistener verwenden würde aufgrund der Admin nicht möglich sein (oder Admin-erteilten Berechtigungen) Problem, aber dann wir fanden, dass localhost ohne dass ein Admin ganz gut funktioniert. Es Art macht Sinn. Extern hören ist „gefährlich“, aber auf der lokalen Maschine zu hören ist nicht ganz so gefährlich

Ok, so dass Sie einen normalen Desktop-App haben, die eingehenden HTTP-Verbindungen ermöglichen, muss - hmm - nicht ist die Windows-Firewall ein Problem sein

Unter der Annahme nicht, es klingt fast wie ein Webservice - könnte man diesen Weg gehen - setzt die URLs über das? Obwohl meine .Net Kenntnisse nicht tief genug, um zu wissen, ob Sie noch einen speziellen HTTP-Server zu beantworten Anfragen ausführen müssen. Spring.Net ist wahrscheinlich einen Blick wert .

nowin eine große lib ist, die in Owin als ServerFactory ohne Abhängigkeit integriert werden können auf HttpListener. War in der Lage zu fallen in Microsoft.Owin.Host.HttpListener lib ohne Probleme ersetzen

Für .NET-Core-Anwendungen gibt es eine neue (Cross-Plattform) HTTP-Server UMSETZUNG: Kestrel .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top