Ho una chat di lavoro come l'applicazione in esecuzione su SignalR 1.1.2 che verrà messa su server con bilanciamento del carico, quindi ho bisogno di implementare una soluzione backplane per sincronizzare i server./signalr/hub non vengono generati durante l'aggiornamento a SignalR-2.0.0-beta2
Questa è un'applicazione ASP.NET MVC4 .NET 4.5. Utilizzo degli hub SignalR e connessione non persistente. L'app utilizza AngularJS sul lato client per gestire i collegamenti e gli aggiornamenti ui.
Ho seguito i passaggi elencati here per implementare il backplane del server sql e ho utilizzato i passaggi illustrati nella migrazione 1.x a 2.0 delineata here. La soluzione si costruisce, ma quando si colpisce la pagina che utilizza SignalR il riferimento allo script "/ signalr/hubs" restituisce un errore 500.
Ecco un elenco di passaggi che ho preso finora.
Utilizzando nuget, sono stati rimossi tutti i riferimenti e le dipendenze correlati a SignalR 1.1.2. Doppio controllo/bin e/pacchetti delle directory per assicurarsi che non facciano più riferimento alle vecchie librerie. Questo è per commento trovato sul github issue relativo ad un aggiornamento 2.0 che diceva che disinstallare e reinstallare SignalR era la via da seguire per un aggiornamento.
installata SignalR 2.0.0-beta2 tramite Package Manager Console (PMC)
Install-Package Microsoft.AspNet.SignalR -Pre
installato SQL Server Messaging backplane utilizzando PMC
Install-Package Microsoft.AspNet.SignalR.SqlServer -Pre
Rimosso
RouteTable.Routes.MapHubs();
da Global.asaxCreazione della classe di avvio nella root del progetto.
Startup.cs
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;
namespace My.NameSpace
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapHubs();
}
}
}
Aggiunto
<add key="owin:AppStartup" value="My.NameSpace.Startup, App_Code"/>
a<appSettings>
all'interno web.configMettere un punto di interruzione nel metodo Startup.Configuration() e verificato che è stato colpito ed eseguito app.MapHubs senza eccezioni all'avvio dell'app
Non utilizzo Connessione permanente, quindi non ho incluso la riga
pagina appapp.MapConnection<MyConnection>("/echo");
e non ho problemi di definizione ambigui.La chat fa riferimento alle seguenti librerie
- jquery-1.8.3.js
- jquery.signalR-2.0.0-beta2.js
<script src='/signalr/hubs'></script>
- AngularJS v1. 1.5
Quando il progetto viene eseguito,
/signalr/hubs
non si trova dalla pagina della chat appstrumenti Chrome dev restituisce
500 Internal Server Error
per il/signalr/hubs
chiamata sulla scheda di rete.il file system non ha una directory
/signalr/hubs
Il mio prossimo passo è quello di vedere se riesco a creare una nuova soluzione con un hub molto semplice e vedere se riesco a ottenere il segnale 2.0 a lavorare. Se lo fa, confronterò le due soluzioni per vedere quali sono le differenze.
Qualcuno ha un'idea di cos'altro potrei controllare o ricercare per farlo funzionare?
domande StackOverflow correlati con un problema simile: one, two
Hai salvato la mia giornata! – Christopher
La cosa strana è che la mia opzione era già impostata su IIS Express (Visual Studio 2013). Come ho ottenuto questo lavoro sta cambiando l'opzione per l'host esterno, quindi tornare a IIS Express e ha funzionato. – Dev