带有 vNext 的 SignalR
SignalR with vNext
我很难在 vNext 项目(epmty 模板)中使用 SignalR。
首先,我将 SignalR.Server 依赖项添加到我的 project.json 文件中,它现在看起来像这样:
{
"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": { }
}
}
然后我想在我的 Startup.cs 中映射 SignalR(因为我在 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();
}
,但是当我在顶部添加时:
using Microsoft.AspNet.SignalR;
我收到错误:
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
我现在卡住了。
编辑:
问题一定出在 project.json 因为当我从音乐商店复制那个时问题就消失了。
这是我当前的project.json(可能不需要一些依赖项,所以我要进一步测试它)
{
"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": { }
}
}
结帐 MusicStore sample,它使用 SignalR。我也在我的 vnext 项目中使用 SignalR(尽管使用 kre,而不是新的 dnx 东西),所以它绝对可行。
查看您最初的 project.json
,这可能是您试图针对 dnx451
但 运行 针对错误的 .NET 开发运行时这一事实。
我在使用这个 vNext 东西时发现的主要事情是您的所有引用都需要处于同一级别 beta3/beta4/beta5 并且您的 .NET 运行时必须匹配(frameworks
in project.json
)。我相信 beta3
使用了 aspnet50
并且由于 beta4
重命名现在是 dnx451
.
值得 运行 dnvm list
在命令行上查看已安装的内容以及设置为 'default' 别名的内容,因为这是 Visual Studio 将使用的内容当 运行 您的应用程序(除非在解决方案 global.json
文件中被覆盖)。
我很难在 vNext 项目(epmty 模板)中使用 SignalR。
首先,我将 SignalR.Server 依赖项添加到我的 project.json 文件中,它现在看起来像这样:
{
"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": { }
}
}
然后我想在我的 Startup.cs 中映射 SignalR(因为我在 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();
}
,但是当我在顶部添加时:
using Microsoft.AspNet.SignalR;
我收到错误:
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
我现在卡住了。
编辑:
问题一定出在 project.json 因为当我从音乐商店复制那个时问题就消失了。
这是我当前的project.json(可能不需要一些依赖项,所以我要进一步测试它)
{
"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": { }
}
}
结帐 MusicStore sample,它使用 SignalR。我也在我的 vnext 项目中使用 SignalR(尽管使用 kre,而不是新的 dnx 东西),所以它绝对可行。
查看您最初的 project.json
,这可能是您试图针对 dnx451
但 运行 针对错误的 .NET 开发运行时这一事实。
我在使用这个 vNext 东西时发现的主要事情是您的所有引用都需要处于同一级别 beta3/beta4/beta5 并且您的 .NET 运行时必须匹配(frameworks
in project.json
)。我相信 beta3
使用了 aspnet50
并且由于 beta4
重命名现在是 dnx451
.
值得 运行 dnvm list
在命令行上查看已安装的内容以及设置为 'default' 别名的内容,因为这是 Visual Studio 将使用的内容当 运行 您的应用程序(除非在解决方案 global.json
文件中被覆盖)。