【发布时间】:2018-05-22 19:26:01
【问题描述】:
我很难找到如何在带有 SignalR 的 Asp.Net Core 中将值配置为 ConnectionTimeout、DisconnectionTimeout。在 MVC 中,您使用的是 Global.asax 文件,并且配置如下:
using System;
using Microsoft.AspNet.SignalR;
namespace Wozkowi
{
public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
// Make connections wait 50s maximum for any response. After
// 50s are up, trigger a timeout command and make the client reconnect.
GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(20);
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(5);
}
}
}
但在 Asp.Net Core Global.asax 中不再存在,据我所知,配置应该放在 Startup.cs 中。但主要问题是 Microsoft.AspNetCore.SingalR 中的 GlobalHost 未定义。那么我应该如何添加配置呢?
编辑:
我正在使用 Microsoft.AspNetCore.SignalR v.1.0.0-rc1-final。所以在services.AddSignalR() 期间我可以传递对象:
public class HubOptions
{
public HubOptions();
public TimeSpan? HandshakeTimeout { get; set; }
public TimeSpan? KeepAliveInterval { get; set; }
public IList<string> SupportedProtocols { get; set; }
public bool? EnableDetailedErrors { get; set; }
}
但是仍然没有设置DisconnectionTimeout的选项,在api.UseSignalR()期间也可以传递这个选项对象:
public class HttpConnectionOptions
{
public HttpConnectionOptions();
public IList<IAuthorizeData> AuthorizationData { get; }
public TransportType Transports { get; set; }
public WebSocketOptions WebSockets { get; }
public LongPollingOptions LongPolling { get; }
public long TransportMaxBufferSize { get; set; }
public long ApplicationMaxBufferSize { get; set; }
}
但是即使在 LongPollingOptions 对象中仍然没有想要的选项。我错过了什么?
【问题讨论】:
-
在你的
Startup.cs文件中,当你调用AddSignalR(options => ...)时,你可以配置你想要的设置。 -
是的,你是对的,但你知道我可以在哪里设置 DisconnectionTimeout 吗?因为这里我没有这个可能性。
-
它回答了我的问题,但并不完全。仍然缺少请求的配置选项。
标签: c# asp.net-core signalr