2015-06-15 7 views
6

scusa se questa è una domanda stupida ma non capisco. Quindi ho creato una pagina ASP.NET 5 utilizzando Visual Studio 2015 e DNX.Server Web per ASP.NET 5 che funziona senza debug attivo

Fuori dalla scatola ho questi due dipendenze nella mia project.json:

"Microsoft.AspNet.Server.IIS": "1.0.0-beta4", 
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta4" 

Sotto "comandi" in project.json Ho il seguente:

"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000" 

nelle proprietà del progetto Posso cambiare i profili tra "IIS Express" e "web" come opzioni di implementazione. Entrambi funzionano bene, quando avvio il debug, avvia il server Web (IIS Express o WebListener) e il sito funziona. Se smetto di eseguire il debug, il server si arresta. Il WebListener apre un "dnx.exe" in un prompt dei comandi.

Questo pluggable server layer è davvero bello, ho capito. Ma come faccio, come programmatore, a configurare un server semplice in cui posso apportare modifiche al mio sito e vedere rapidamente le modifiche? Posso ovviamente installare IIS e creare un sito che punta al mio wwwroot ma è la mia unica opzione nel mondo ASP.NET? Posso avere il WebListener "avviato in background" (senza mostrarmi un prompt dei comandi con dnx.exe)? Posso anche avviare un server nodo, ma ancora una volta - è bello che io possa ma perché devo quando ho il pieno di ASP.NET toolbelt?

ASP.NET 5 ha dynamic compilation ma non sono sicuro di come testarlo da quando il mio server Web viene avviato solo quando sono in modalità di debug.

So che questa è una pre-release ma qualsiasi aiuto sarebbe molto apprezzato.

+0

Ho risposto a quello che potevo, ma una parte della terminologia non è chiara. Cosa intendi per "server nodo" o "toolbelt ASP.NET completo"? –

+0

È meglio porre una domanda per domanda. A volte per chiarezza ha senso chiedere due o tre domande strettamente collegate allo stesso problema, ma da "Questo livello server collegabile è davvero bello, ..." sembra chiedersi perché si dovrebbe utilizzare un server diverso da IIS. Questo dovrebbe essere scomposto in una domanda separata. Probabilmente troverai risposte migliori e più numerose utilizzando più domande focalizzate piuttosto che una domanda "ecco un mucchio di cose che non capisco per favore aiutami". –

+0

Grazie per i suggerimenti. Con "server di nodi" intendevo il server web node.js e "toolbet completo ASP.NET" intendevo "tutte le funzionalità introdotte in ASP.NET". Tuttavia, sono d'accordo sul fatto che le domande nelle domande siano una cattiva idea, ma la tua risposta è davvero buona, quindi lo apprezzo. "Shift + F5" (inizia senza debug) è stata la vera risposta che stavo cercando - grazie! – mikeesouth

risposta

6

Ma come faccio, in qualità di sviluppatore, di configurare un server semplice in cui posso trasformare un nel mio sito e vedere rapidamente le modifiche.

Indipendentemente dal server utilizzato, è possibile utilizzare la compilazione dinamica avviando il progetto senza debug (Maiusc + F5).

A causa di motivi architettonici, la compilazione dinamica non funziona quando si inizia con il debug (F5) in Visual Studio. Ciò è dovuto al fatto che la differenza tra Shift + F5 e F5 è che nel secondo, VS collega il debugger al processo.

Questo sarà supportato in futuro? Questo non è chiaro ma in questo momento perché VS non è abbastanza "intelligente" da gestire il distacco dai processi, in attesa che dnx esegua la ricompilazione dinamica e quindi ricolleghi al processo. Tuttavia fino ad ora non ha mai avuto un motivo per supportare uno scenario del genere, quindi non è chiaro se sia solo un "non sa ancora come farlo" o "è impossibile da fare".

posso ovviamente installare IIS e creare un sito che punta alla mia wwwroot ma è che la mia unica opzione nel mondo ASP.NET?

No. È possibile utilizzare qualsiasi server Web che supporti Microsoft.AspNet.Hosting. Oggi le tue scelte sono limitate a IIS, IIS Express e ai due server sperimentali a cui sei collegato, ma l'obiettivo è quello di consentire a terze parti di sviluppare alternative fornendo un'interfaccia che può essere programmata contro (Microsoft.AspNet.Hosting).

ASP.NET 5 ha una compilazione dinamica ma non sono sicuro di come testarlo anche poiché il mio server web è stato avviato solo quando sono in modalità di debug.

Se l'applicazione Web è in esecuzione, il server viene avviato. Nessun server web = nessuna applicazione ASP.NET. Suppongo che per "modalità di debug" intendi "Inizia con Debug (F5)". Se è così allora "Inizia senza Debug (Shift + F5)" per risolvere il problema che stai vivendo.

Ecco un esercitazione:

  1. Chiudere Visual Studio (non è un requisito, ma utile per mostrare niente di tutto questo è VS specifica).
  2. Avvia il server web. Il modo più semplice sarebbe dnx. Web eseguito dalla riga di comando nella cartella principale del progetto. È comunque possibile avviare IIS Express (dovrebbe essere già configurato) o anche configurare IIS e avviarlo.
  3. Verificare che il server Web e l'applicazione Web siano in esecuzione aprendolo in un browser.
  4. Utilizzando notepad o un altro editor di testo, modificare un file nel progetto che avrebbe una modifica visibile o semplicemente forzare un errore "lanciare una nuova NullReferenceException()".
  5. Salvare il file.
  6. Aggiorna il browser.

L'applicazione Web riflette la modifica. Potresti notare un leggero ritardo se si aggiorna rapidamente. Questa è la compilazione dinamica della memoria che si verifica.

+0

Ho trovato che il tuo esercizio funziona da Visual Studio con (Shift + F5) ma non con 'dnx. web'. In quest'ultimo, sulla mia macchina, l'applicazione non riflette la modifica. –

+0

Anche a lavoro da Visual Studio. Quando provo ad avviare "dnx. Web" da un prompt dei comandi, viene visualizzato un messaggio "Avviato" ma il server non risponde sulla porta 5000 come dovrebbe. Credo che sto facendo qualcosa di sbagliato ma per ora lo avvio da Visual Studio e scaverò ulteriormente un altro giorno. – mikeesouth

+0

Buon post, ma ho dovuto usare "ctrl + F5", o semplicemente nel menu "Debug -> Avvia senza debug". –