2015-12-17 5 views
10

Ich hatte den Eindruck, dass wir tatsächlich eine Konsolen-App auf einem Live-Server betreiben könnten, der Daten abhören und bereitstellen würde (Webseiten, wenn es zu diesem Zweck gäbe). Auf diese Weise müssen wir unsere Web-Apps nicht auf IIS hosten. Ich dachte immer, dass dies "Hosting von Web-Apps in Ihrem eigenen Prozess" bedeutet.ASP.net 5 Self-Hosted auf Live Windows Server - EACCES-Berechtigung verweigert?

Hier ist ein Teil meines project.json dass ich denke, ist relevant:

"dependencies": { 
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final" 
    }, 

    "commands": { 
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5010" 
    }, 

Wenn ich an der Eingabeaufforderung ging, dir an die Wurzel des Projekts, und lief dann DNX Netz, ja, in der Tat läuft die Konsolen-App und ich könnte zu meinem Browser gehen und http://localhost:5010 eingeben und die Webseite sehen.

Aber wenn ich diese URL zu einer tatsächlichen URL ändern (und ja, ich habe bereits DNS für diese URL auf meinen Server zeigen), bekomme ich den Fehler EACCES permission denied.

Wenn wir nur mit localhost "selbst-hosten" können, scheint das nur für die lokale Entwicklung gut zu sein. Warum kann ich "in meinem eigenen Prozess" selbst hosten , wenn es nicht für Live/Produktion sein kann?

Was müsste ich tun? Muss ich einige Berechtigungen für einen bestimmten Ordner festlegen? Welcher Benutzer/welche Gruppe, welche Berechtigungen und welcher Ordner? Ich habe versucht, IIS_IUSRS im Stamm des Projekts, und natürlich, das funktioniert nicht, weil ich IIS sowieso umgehen wollte.

Jede Hilfe würde sehr geschätzt werden.

+1

Hast du es noch herausgefunden? Ist es möglich, dass eine andere App diesen Port bereits verwendet? Wie eine Anwendung in IIS wird eine andere Instanz Ihrer App ausgeführt? Können Sie das gesamte Ausgabeprotokoll von der Konsole einfügen? –

+0

Ich denke, Sie könnten Recht haben. Es gibt dieselbe Website, die in IIS registriert ist, auf die ich versuche, Kestrel anzuhören. Ich werde das untersuchen und ich werde zu dir zurückkommen, wenn ich etwas finde. –

+1

Ich hatte gerade einen ähnlichen Fehler, und das Ändern des Ports löste es. IIS hatte einige Anwendungen an Port 80. Danke, @JijieChen –

Antwort

14

Für jedermann daran, diese Frage später:

Wenn Sie den Kestrel-Server zu starten, müssen Sie sicherstellen, dass es nicht schon etwas an diesem Port hört, sonst wird es nicht möglich sein, zu starten. IIS ist ein offensichtlicher Täter, wenn Sie versuchen, etwas auf Standard-HTTP (Port 80) zu hosten. Sie müssen entweder den laufenden Betrieb an diesem Port stoppen oder den Datenverkehr auf Ihren Kestrel-Server weiterleiten.

Weitere Informationen über ASP.NET 5 Projekte direkt in IIS-Hosting sind hier zu finden: https://docs.asp.net/en/latest/publishing/iis.html

Verwandte Themen