我有一个服务器与ubuntu 16.04,kestrel和nginx作为代理服务器重定向到我的应用程序所在的localhost.我的应用程序在Asp.Net Core 2.我正在尝试添加推送通知和使用SignalR核心.在localhost上一切都运行良好,并在免费托管与iis和Windows.但是当我在linux服务器上部署我的应用程序时,我有一个错误:
signalr-clientES5-1.0.0-alpha2-final.min.js?v = kyX7znyB8Ce8zvId4sE1UkSsjqo9gtcsZb9yeE7Ha10:1个WebSocket连接到'ws://devportal.vrweartek.com/chat?id = 210fc7b3-e880-4d0e-b2d1-a37a9a982c33'失败:WebSocket握手期间出错:意外的响应代码:204
但是只有当我通过我的站点名称从不同的机器请求我的站点时才会出现此错误.当我通过localhost:port从服务器请求站点时,一切都很好.所以我认为nginx存在问题.我读到我需要配置它来处理websocket,这些websocket用于signalr建立连接,但我没有成功.可能只有一些愚蠢的错误?
我将 SignalR 与 ASP.NET Core 2.0 结合使用,并尝试向特定用户发送通知,如下所示:
_notification.Clients.User(id).InvokeAsync("SendMes");
Run Code Online (Sandbox Code Playgroud)
其中 _notification 是 IHubContext。但这不起作用。当我向所有用户发送通知时,一切都很好,所有用户都会收到通知。但是当我将其发送给特定用户时,什么也没有发生。在连接中我需要用户,但似乎他没有用户ID。那么我该怎么做呢?通过访问身份和声明?如果是这样,该怎么做?
我在我的 ASP Core 2.2 应用程序中使用了 serilog。一切正常,但我无法设置flushToDiskInterval。例如,这意味着我想每分钟将日志刷新到磁盘,但日志会在创建时刷新。我的 Program.cs 文件:
public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.File("Logs/log-{Date}.txt", buffered: true, flushToDiskInterval: TimeSpan.FromSeconds(60))
.CreateLogger();
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSerilog() // Set serilog as the logging provider.
.UseStartup<Startup>();
}
Run Code Online (Sandbox Code Playgroud)
那么问题来了,如何设置间隔呢?
==更新==
我无法理解,但现在一切正常……我检查过,确实设置了冲洗间隔。