2015-12-17 32 views
10

Avevo l'impressione che potessimo effettivamente eseguire un'app console su un server live che ascoltasse e servisse i dati (pagine Web se lo fosse per quello scopo). In questo modo, non dovremo ospitare le nostre app Web su IIS. Ho sempre pensato che questo fosse ciò che significa "ospitare web app nel tuo processo".ASP.net 5 Self-Hosted su Windows Live Server - Autorizzazione EACCES negata?

Ecco una parte della mia project.json che secondo me è rilevante:

"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" 
    }, 

Se sono andato al prompt dei comandi, dir fino alla radice del progetto, e poi corse dnx web, sì, infatti, l'app per console è in esecuzione e potrei andare sul mio browser e digitare http://localhost:5010 e vedere il sito web.

Ma quando cambio l'URL in un url effettivo (e sì, ho già il DNS che punta al mio server per quell'url), riceverò l'errore EACCES permission denied.

Se possiamo "self-host" ma solo con localhost, ciò sembra positivo solo per lo sviluppo locale. Perché avere la possibilità di "self-host nel mio processo" se non può essere per live/production?

Cosa dovrei fare? Dovrò impostare alcune autorizzazioni per una particolare cartella? Quale utente/gruppo, quali permessi e quale cartella? Ho provato IIS_IUSRS sulla radice del progetto e, naturalmente, questo non funziona perché volevo comunque bypassare IIS.

Qualsiasi aiuto sarebbe molto apprezzato.

+1

Forse capito ancora? È possibile che alcune altre app stiano già utilizzando questa porta? Come un'applicazione in IIS, un'altra istanza della tua app è in esecuzione? È possibile incollare l'intero registro di output dalla console? –

+0

Penso che potresti avere ragione. C'è lo stesso sito web registrato in IIS che sto cercando di far ascoltare a Kestrel. Lo esaminerò e tornerò da te quando trovo qualcosa. –

+1

Ho appena avuto un errore simile, e cambiando la porta l'ho risolto. IIS aveva alcune app sulla porta 80. Grazie, @JijieChen –

risposta

14

Per chiunque trovare questa domanda successiva:

Quando si avvia il server Kestrel, è necessario assicurarsi che non ci sia già qualcosa di ascolto su quella porta, altrimenti non sarà in grado di avviare. IIS è un colpevole evidente se stai cercando di ospitare qualcosa su standard http (porta 80). È necessario interrompere qualsiasi altra esecuzione su quella porta o utilizzarla per inoltrare il traffico sul server Kestrel.

Maggiori informazioni su hosting ASP.NET 5 progetti direttamente in IIS può essere trovato qui: https://docs.asp.net/en/latest/publishing/iis.html