2015-04-22 10 views
6

Ich habe Schwierigkeiten, SignalR in vNext Projekt (epmty Vorlage) zu verwenden.SignalR mit vNext

Firsty fügte ich SignalR.Server Abhängigkeit meiner project.json Datei und es sieht nun wie folgt aus:

{ 
    "webroot": ".", 
    "dependencies": { 
     "Microsoft.AspNet.Server.IIS": "1.0.0-beta3", 
     "Microsoft.AspNet.Server.WebListener": "1.0.0-*", 
     "Microsoft.AspNet.StaticFiles": "1.0.0-*", 
     "Microsoft.AspNet.SignalR.Server": "3.0.0-*", 
     "Serilog": "1.4.113.0" 
}, 
    "commands": { 
     "web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5002" 
    }, 
    "frameworks": { 
     "dnx451": { 
      "dependencies": { 
       "Microsoft.Framework.Logging.Serilog": "1.0.0-*" 
      } 
     }, 
     "dnxcore50": { } 
    } 
} 

Und dann habe ich die SignalR in meinem Startup.cs abbilden wollte (wie i somwhere auf gefunden git)

public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddSignalR(options => 
     { 
      options.Hubs.EnableDetailedErrors = true; 
     }); 
    } 

    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) 
    { 
#if DNX451 
     string OutputTemplate = "{SourceContext} {Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}"; 

     var serilog = new LoggerConfiguration() 
      .MinimumLevel.Verbose() 
      .WriteTo.RollingFile(@".\SignalR-Log-{Date}.txt", outputTemplate: OutputTemplate); 

     loggerFactory.AddSerilog(serilog); 
#endif 

     app.UseFileServer(); 

     app.UseSignalR<RawConnection>("/raw-connection"); 
     app.UseSignalR(); 
    } 

, aber wenn ich an der Spitze hinzu:

using Microsoft.AspNet.SignalR; 

ich Fehler:

The type or namespace name 'SignalR' does not exist in the namespace >'Microsoft.AspNet' (are you missing an assembly reference?) VersaWeb.ASP.NET >5.0 c:\Users\Jakub\documents\visual studio >2015\Projects\VersaWeb\src\VersaWeb\Startup.cs

Und ich stecke jetzt fest.


EDIT:

Das Problem mit project.json sein musste becouse, wenn ich das eine vom Musikspeicher kopiert das Problem verschwunden.

Hier ist meine aktuelle project.json (wahrscheinlich einige Abhängigkeiten werden nicht benötigt, so soll ich jetzt weiter testen)

{ 
"authors": [ 
    "author" 
], 
"description": "your description here", 
"version": "1.0.0", 
"compilationOptions": { "warningsAsErrors": true, "define": [ "DEMO", "TESTING" ] }, 
"code": [ 
    "**/*.cs" 
], 
"bundleExclude": "*.cmd", 
"webroot": "wwwroot", 
"dependencies": { 
    "EntityFramework.SqlServer": "7.0.0-beta3", 
    "EntityFramework.InMemory": "7.0.0-beta3", // For Mono. 
    "Kestrel": "1.0.0-beta3", 
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta3", 
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta3", 
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta3", 
    "Microsoft.AspNet.Mvc": "6.0.0-beta3", 
    "Microsoft.AspNet.Security.OpenIdConnect": "1.0.0-beta3", 
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta3", 
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta3", 
    "Microsoft.AspNet.SignalR.Server": "3.0.0-beta3", 
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta3", 
    "Microsoft.Framework.Cache.Memory": "1.0.0-beta3", 
    "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta3", 
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta3", 
    "Microsoft.Framework.Logging.Console": "1.0.0-beta3" 
}, 
"commands": { 
    "gen": "Microsoft.Framework.CodeGeneration", 
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004", 
    "run": "run server.urls=http://localhost:5003", 
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5002" 
}, 
"frameworks": { 
    "aspnet50": { }, 
    "aspnetcore50": { } 
} 
} 
+1

Vielleicht gilt der Fehler nur für dnxcore? Versuchen Sie, "" dnxcore50 ": {}" in project.json zu kommentieren, um dies zu überprüfen. Überprüfen Sie auch [MusicStore-Beispiel] (https://github.com/aspnet/MusicStore/tree/master/src/MusicStore), das SignalR verwendet. Ich benutze SignalR auch in meinem vnext-Projekt (obwohl mit kre, nicht die neuen dnx-Sachen), also ist es definitiv machbar. – qbik

+0

Ich kommentierte dnxcore50 und nichts passierte, aber jetzt habe ich Musicstore heruntergeladen und ich werde meine Dateien mit Geschäften überprüfen und vergleichen –

+0

MusicStore Beispiel funktioniert - und entsprechend Webkonsole Web-Sockets wurden korrekt geöffnet - ich werde jetzt prüfen –

Antwort

4

Kasse MusicStore sample, die SignalR verwendet. Ich benutze SignalR auch in meinem vnext-Projekt (obwohl mit kre, nicht die neuen dnx-Sachen), also ist es definitiv machbar.

+0

Es tat wahrscheinlich in der Vergangenheit, aber ich kann nicht finden, die Referenz in der Datei project.json https: // github.com/aspnet/MusicStore/blob/dev/src/MusicStore/project.json –

+1

Tatsächlich scheinen sie [SignalR] (https://github.com/aspnet/MusicStore/issues/529) und auch [MusicStore verschoben. Spa] (https://github.com/aspnet/MusicStore/issues/537) bis [Entropy] (https://github.com/aspnet/Entropy) Repo. Ich habe ein einfaches Beispiel der Verwendung von SignalR in aspnet5 hier zusammengestellt: https://github.com/heavymetaldev/aspnet5-signalr – qbik

+0

Cool! Auf MSDN habe ich auch ein Beispiel gefunden, das hier heruntergeladen werden kann https://code.msdn.microsoft.com/The-ASPNET-vNext-Real-Time-b1d27fe4. (Schauen Sie sich die witzigen Build-Anweisungen an.) Dies verwendet die stabile Version 2.2.0 von SignalR, da die Version 3.0 im Laufe dieses Jahres auf Q3 verschoben wird (https://github.com/aspnet/Home/wiki/Roadmap). –

2

Mit Blick auf Ihre ursprüngliche project.json war es wahrscheinlich die Tatsache, dass Sie versucht haben, Ziel dnx451, aber gegen die falsche .NET-Entwicklungslaufzeit laufen.

Die Hauptsache ich gefunden, wenn sie mit diesem vNext Sachen arbeiten, ist, dass alle Ihre Referenzen auf dem gleichen Niveau beta3/beta4/beta5 und Ihre .NET-Runtime muss sein müssen übereinstimmen (frameworks in project.json). Ich glaube, beta3 verwendet aspnet50 und seit der beta4 umbenennen ist es jetzt dnx451.

Es lohnt sich, in der Befehlszeile dnvm list auszuführen und zu sehen, was installiert ist und was auf den 'Standard'-Alias ​​gesetzt ist, wie Visual Studio beim Ausführen der Anwendung verwendet (außer in der Lösung global.json Datei überschrieben).