120 messaggi dal 09 ottobre 2008
Ciao a tutti,
vorrei realizzare delle API usando le ultime tecnologie messe a disposizione da MS, quindi Web Api 2.

Vorrei sapere però se c'è un modo per mettere in produzione poi le API e magari servirle con IIS invece di lanciarle da riga di comando.

Grazie
Roberto
11.885 messaggi dal 09 febbraio 2002
Contributi
Ciao Roberto,
certamente, un'applicazione ASP.NET Core può andare in esecuzione alle spalle di IIS. Devi disporre di IIS 7.5 (o superiore) e di un accesso amministrativo al server per installare il web platform handler, come spiegato in questo articolo della documentazione.
http://docs.asp.net/en/latest/publishing/iis.html

L'articolo, sostanzialmente, ti chiede di usare il comando Publish di Visual Studio per pubblicare in una tua cartella locale, di cui poi dovrai copiare il contenuto a mano nel server.

Tradizionalmente, il metodo migliore per mettere in produzione una webapp ASP.NET è sempre stato il Web Deploy. Al momento, per le applicazioni ASP.NET Core richiede dei passi aggiuntivi per funzionare e li trovi riepilogati qui:
http://docs.asp.net/en/latest/publishing/iis-with-msdeploy.html
Dato che ASP.NET Core non è stato ancora rilasciato, questa procedura è provvisoria e dovrebbero semplificarla molto per la data di rilascio ufficiale.

Scegli tu quale delle due modalità usare (cartella locale o Web deploy).

ciao,
Moreno
Modificato da BrightSoul il 31 marzo 2016 21.57 -

Enjoy learning and just keep making
120 messaggi dal 09 ottobre 2008
Ciao,
purtroppo non sono ancora riuscito a mettere online il sito.

Col primo metodo mi dà errore di "Bad Request - Invalid Hostname"

Del secondo metodo invece sinceramente non sono riuscito a capire granché.

Roberto
11.885 messaggi dal 09 febbraio 2002
Contributi
Ciao Roberto,
per il momento prova a mettere in produzione un'applicazione base, che scriva solo "Hello world". Non mi è chiaro se il problema è nell'applicazione o se dipende da come hai configurato i Bindings del sito IIS.

Tu con quale hostname stai accedendo al sito, con l'IP del server? (Es. http://192.168.1.100). Hai inserito questo hostname tra i bindings del sito IIS?

Stai provando a visitarlo da un PC collegato in rete locale oppure dal server stesso, usando il browser del server?

ciao,
Moreno

Enjoy learning and just keep making
120 messaggi dal 09 ottobre 2008
Ciao

sto eseguendo il servizio su server locale e come binding ho puntato a localhost.

Adesso mi funzionano i file statici nella wwwroot.

Il progetto è di tipo web api 2 con aggiunta di swagger.

Swagger funziona perfettamente, quando provo a chiamare i servizi invece all'url:

localhost:5000/api/v1/servizio


mi restituisce:

Errore HTTP 502.3 - Bad Gateway


La documentazione dice che è un problema dell' httpplatformhandler ma l'ho installato correttamente sia manualmente che tramite Web Platform Installer

Cos'altro mi puoi consigliare?

Grazie
Roberto
120 messaggi dal 09 ottobre 2008
Ciao, sono riuscito a risolvere: leggendo il log generato alla richiesta all'URL, mi sono reso conto che c'era un errore di connessione al DB.

La pagina cercava di accedere con Account "SERVIZIO DI RETE", mentre tramite Visual Studio questo errore non viene generato e l'app accede tranquillamente con la connection string specificata.

Funziona e mi sta bene così, ma se si potesse capire come mai veniva generato l'errore dormirei meglio ;P


Grazie del tempo che mi hai dedicato

Roberto
11.885 messaggi dal 09 febbraio 2002
Contributi
Ciao Roberto,


tramite Visual Studio questo errore non viene generato e l'app accede tranquillamente con la connection string specificata.

Già, perché Visual Studio si avvale di IIS Express, che va in esecuzione con il tuo utente di Windows. Probabilmente il tuo utente era anche il proprietario del database e perciò è stato possibile collegarsi ed usare quel db con una connection string che recava "Integrated Security=true".

Se invece mandi in esecuzione il sito con IIS, l'utente sarà diverso (SERVIZIO DI RETE, nel tuo caso) ma quell'utente non ha privilegi per accedere al db. In questo caso potresti usare una connection string che si avvale dell'autenticazione SQL. Se scegli questa strada, creati un utente ad hoc, rendilo proprietario del db ed usa le sue credenziali nella connection string. Così potrai collegarti al db indipendentemente dall'utente di Windows con cui va in esecuzione il sito.

ciao,
Moreno

Enjoy learning and just keep making
120 messaggi dal 09 ottobre 2008
Ah ecco, giusto!

Grazie della spiegazione!

Roberto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.