Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa esercitazione illustra come ospitare automaticamente OWIN in un ruolo di lavoro di Microsoft Azure.
Open Web Interface for .NET (OWIN) definisce un'astrazione tra i server Web .NET e le applicazioni Web. OWIN separa l'applicazione Web dal server, che rende OWIN ideale per l'auto-hosting di un'applicazione Web nel proprio processo, all'esterno di IIS, ad esempio all'interno di un ruolo di lavoro di Azure.
In questa esercitazione si apprenderà come ospitare automaticamente un'applicazione OWIN all'interno di un ruolo di lavoro di Microsoft Azure. Per altre informazioni sui ruoli di lavoro, vedere Modelli di esecuzione di Azure.
Versioni software usate nell'esercitazione
Creare un progetto di Microsoft Azure
Avviare Visual Studio con privilegi di amministratore. I privilegi di amministratore sono necessari per eseguire il debug dell'applicazione in locale usando l'emulatore di calcolo di Azure.
Nel menu File fare clic su Nuovo, quindi su Progetto. In Modelli installati, in Visual C#, fare clic su Cloud e quindi su Servizio cloud di Windows Azure. Assegnare un nome al progetto "AzureApp" e fare clic su OK.
Nella finestra di dialogo Nuovo servizio cloud di Windows Azure fare doppio clic su Ruolo di lavoro. Lasciare il nome predefinito ("WorkerRole1"). Questo passaggio aggiunge un ruolo di lavoro alla soluzione. Fare clic su OK.
La soluzione di Visual Studio creata contiene due progetti:
- "AzureApp" definisce i ruoli e la configurazione per l'applicazione Azure.
- "WorkerRole1" contiene il codice per il ruolo di lavoro.
In generale, un'applicazione di Azure può contenere più ruoli, anche se questa esercitazione usa un singolo ruolo.
Aggiungere i pacchetti di Self-Host OWIN
Dal menu Strumenti fare clic su Gestione pacchetti NuGet e quindi su Console di Gestione pacchetti.
Nella finestra Console di gestione pacchetti immettere il comando seguente:
Install-Package Microsoft.Owin.SelfHost
Aggiungere un endpoint HTTP
In Esplora soluzioni espandere il progetto AzureApp. Espandere il nodo Ruoli, fare clic con il pulsante destro del mouse su WorkerRole1 e scegliere Proprietà.
Scegliere Endpoint, quindi fare clic su Aggiungi endpoint.
Nell'elenco a discesa Protocollo selezionare "http". In Porta pubblica e porta privata digitare 80. Questi numeri di porta possono essere diversi. La porta pubblica è ciò che i client usano quando inviano una richiesta al ruolo.
Creare la classe di avvio OWIN
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto WorkerRole1 e selezionare Aggiungi / classe per aggiungere una nuova classe. Denominare la classe Startup
.
Sostituire tutto il codice boilerplate con quanto segue:
using Owin;
namespace WorkerRole1
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseWelcomePage("/");
}
}
}
Il UseWelcomePage
metodo di estensione aggiunge una semplice pagina HTML all'applicazione per verificare che il sito funzioni.
Avviare l'host OWIN
Aprire il file WorkerRole.cs. Questa classe definisce il codice eseguito quando il ruolo di lavoro viene avviato e arrestato.
Aggiungere l'istruzione using seguente:
using Microsoft.Owin.Hosting;
Aggiungere un membro IDisposable alla WorkerRole
classe:
public class WorkerRole : RoleEntryPoint
{
private IDisposable _app = null;
// ....
}
OnStart
Nel metodo aggiungere il codice seguente per avviare l'host:
public override bool OnStart()
{
ServicePointManager.DefaultConnectionLimit = 12;
// New code:
var endpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"];
string baseUri = String.Format("{0}://{1}",
endpoint.Protocol, endpoint.IPEndpoint);
Trace.TraceInformation(String.Format("Starting OWIN at {0}", baseUri),
"Information");
_app = WebApp.Start<Startup>(new StartOptions(url: baseUri));
return base.OnStart();
}
Il metodo WebApp.Start avvia l'host OWIN. Il nome della classe è un parametro di Startup
tipo per il metodo. Per convenzione, l'host chiamerà il Configure
metodo di questa classe.
Eseguire l'override OnStop
di per eliminare l'istanza di _app :
public override void OnStop()
{
if (_app != null)
{
_app.Dispose();
}
base.OnStop();
}
Ecco il codice completo per WorkerRole.cs:
using Microsoft.Owin.Hosting;
using Microsoft.WindowsAzure.ServiceRuntime;
using System;
using System.Diagnostics;
using System.Net;
using System.Threading;
namespace WorkerRole1
{
public class WorkerRole : RoleEntryPoint
{
private IDisposable _app = null;
public override void Run()
{
Trace.TraceInformation("WorkerRole entry point called", "Information");
while (true)
{
Thread.Sleep(10000);
Trace.TraceInformation("Working", "Information");
}
}
public override bool OnStart()
{
ServicePointManager.DefaultConnectionLimit = 12;
var endpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"];
string baseUri = String.Format("{0}://{1}",
endpoint.Protocol, endpoint.IPEndpoint);
Trace.TraceInformation(String.Format("Starting OWIN at {0}", baseUri),
"Information");
_app = WebApp.Start<Startup>(new StartOptions(url: baseUri));
return base.OnStart();
}
public override void OnStop()
{
if (_app != null)
{
_app.Dispose();
}
base.OnStop();
}
}
}
Compilare la soluzione e premere F5 per eseguire l'applicazione in locale nell'emulatore di calcolo di Azure. A seconda delle impostazioni del firewall, potrebbe essere necessario consentire l'emulatore tramite il firewall.
L'emulatore di calcolo assegna un indirizzo IP locale all'endpoint. È possibile trovare l'indirizzo IP visualizzando l'interfaccia utente dell'emulatore di calcolo. Fare clic con il pulsante destro del mouse sull'icona dell'emulatore nell'area di notifica della barra delle applicazioni e selezionare Mostra interfaccia utente dell'emulatore di calcolo.
Trovare l'indirizzo IP in Distribuzioni del servizio, distribuzione [id], Dettagli del servizio. Aprire un Web browser e passare a http:// address, dove l'indirizzo IP è l'indirizzo IP assegnato dall'emulatore di calcolo; ad esempio , http://127.0.0.1:80
. Verrà visualizzata la pagina iniziale di OWIN:
Distribuisci in Azure
Per questo passaggio, è necessario disporre di un account Azure. Se non ne hai già uno, puoi creare un account di valutazione gratuito in pochi minuti. Per informazioni dettagliate, vedere Versione di valutazione gratuita di Microsoft Azure.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto AzureApp. Selezionare Pubblica.
Se non si è connessi all'account Azure, fare clic su Accedi.
Dopo l'accesso, scegliere una sottoscrizione e fare clic su Avanti.
Immettere un nome per il servizio cloud e scegliere un'area. Fare clic su Crea.
Fare clic su Pubblica.
La finestra Log attività di Azure mostra lo stato di avanzamento della distribuzione. Quando l'app viene distribuita, passare a http://appname.cloudapp.net/
, dove nome app è il nome del servizio cloud.