2015-04-22 16 views
6

Mam trudny czas na użycie SignalR w projekcie vNext (szablon epmty).SignalR z vNext

Firsty dodałem zależność SignalR.Server do mojego pliku project.json i wygląda teraz tak:

{ 
    "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": { } 
    } 
} 

A potem chciałem odwzorować SignalR w moim Startup.cs (jak znalazłem somwhere na 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(); 
    } 

, ale kiedy dodać na górze:

using Microsoft.AspNet.SignalR; 

otrzymuję błąd:

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

I utknąłem właśnie teraz.


EDIT:

Problem miał być z project.json poniewaz kiedy skopiowany z jednego sklepu muzycznego problem zniknął.

Oto mój obecny project.json (prawdopodobnie niektóre z zależnościami nie są potrzebne, więc zamierzam dalej go przetestować)

{ 
"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

Być może błąd dotyczy tylko dnxcore? Spróbuj skomentować "" dnxcore50 ": {}" w project.json, aby to sprawdzić. Ponadto, checkout [przykład MusicStore] (https://github.com/aspnet/MusicStore/tree/master/src/MusicStore), który używa SignalR. Używam również SignalR w moim projekcie vnext (chociaż z kre, nie z nowym dnxem), więc jest to zdecydowanie wykonalne. – qbik

+0

Skomentowałem dnxcore50 i nic się nie stało, ale teraz mam pobrany sklep muzyczny, a ja sprawdzę i porówna moje pliki ze sklepami –

+0

Próbki z MusicStore działają - i zgodnie z gniazdami sieci web konsoli internetowej zostały poprawnie otwarte - teraz sprawdzę kod –

Odpowiedz

4

Zamówienie MusicStore sample, który wykorzystuje SignalR. Używam również SignalR w moim projekcie vnext (chociaż z kre, nie z nowym dnxem), więc jest to zdecydowanie wykonalne.

+0

Prawdopodobnie zrobił to w przeszłości, ale nie mogę znaleźć odwołania w pliku project.json https: // github.com/aspnet/MusicStore/blob/dev/src/MusicStore/project.json –

+1

Rzeczywiście wygląda na to, że [usunięto SignalR] (https://github.com/aspnet/MusicStore/issues/529), a także [przeniesiono MusicStore. Spa] (https://github.com/aspnet/MusicStore/issues/537) na [Entropy] (https://github.com/aspnet/Entropy) repo. Połączyłem prosty przykład użycia SignalR w aspnet5 tutaj: https://github.com/heavymetaldev/aspnet5-signalr – qbik

+0

Cool! W witrynie MSDN znalazłem również próbkę, którą można pobrać tutaj: https://code.msdn.microsoft.com/The-ASPNET-vNext-Real-Time-b1d27fe4. (Sprawdź zabawne instrukcje dotyczące kompilacji) Używa wersji Stable 2.2.0 SignalR, ponieważ wersja 3.0 jest opóźniona do Q3 jeszcze w tym roku (https://github.com/aspnet/Home/wiki/Roadmap) –

2

Patrząc na początkowy numer project.json, prawdopodobnie chodziło o to, że próbujesz ustawić docelowy kod na dnx451, ale działa on w złym środowisku wykonawczym .NET.

Najważniejsze znalazłem podczas pracy z tym vNext rzeczy jest to, że wszystkie swoje referencje muszą być na tym samym poziomie beta3/beta4/beta5 a .NET Runtime musi pasować (frameworks w project.json). Wierzę, że beta3 użył aspnet50, a od zmiany nazwy beta4 jest teraz dnx451.

Warto uruchomić dnvm list w linii poleceń i zobaczyć, co jest zainstalowane i co jest ustawione na "domyślny" alias, ponieważ jest to, co Visual Studio będzie używać podczas uruchamiania aplikacji (chyba że overriden w pliku rozwiązanie global.json).