Ho assistente SignalR come progetto Libreria di classi e ho fatto riferimento in applicazione console (per simulare servizio Windows)self-hosted service SignalR non funziona (inizio)
Ecco il codice per SignalR
public void Start()
{
try
{
string url = @"http://*:8081";
using (WebApp.Start<Startup>(url))
{
Logger.Info(string.Format("Server running at {0}", url));
}
}
catch (Exception ex)
{
Logger.Exception(ex, "Signalr start");
}
Run = true;
Logger.Info("Starting Worker");
workerThread = new Thread(() =>
{
Worker();
});
workerThread.Start();
}
e qui è classe di avvio
public class Startup
{
Microsoft.AspNet.SignalR.HubConfiguration hubconfiguration = null;
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
hubconfiguration = new HubConfiguration();
hubconfiguration.EnableDetailedErrors = true;
app.MapSignalR(hubconfiguration);
}
}
così, è in un thread, e l'operaio è in un altro. Ciò sembra soddisfacente dato che l'ho fatto in un altro progetto in cui funziona. Il thread di lavoro non è un problema, è solo un ciclo vuoto, non correlato al server in alcun modo.
Il problema è che il server sembra "fermarsi" - quando guardo con Netstat, nessuno sta ascoltando sulla porta 8081. Non c'è eccezione, fallisce silenziosamente.
Ho fatto riferimento a Owin.Cors (e Owin.Host.HttpListener) nel progetto della console che esegue effettivamente questo server ma, come ho detto, il server si ferma.
Quando provo a connettermi, il client dice "connessione attivamente rifiutata" e Putty (telnet) dice anche "non può connettersi".
Dov'è il problema? In poche parole, ho una libreria di classi con server SignalR a cui si fa riferimento nel progetto della console che lo esegue ma il server non funzionerà.
[modifica]
E c'è il codice di Console app che avvia il servizio
static void Main(string[] args)
{
ServiceEngine Engine = new ServiceEngine();
Engine.Start();
Console.ReadKey();
Engine.Stop();
}
P.S. Scusa per il mio cattivo inglese.
Si dovrebbe contrassegnare questo come risposta! Buona fortuna! –
@Matei_Radu, lo farò, quando il sito lo permetterà ... Dice tra due giorni. – nighthawk