我升级到.NET 4.5,现在SignalR似乎坚持在Firefox / Chrome中使用WebSockets - 尽管我只在没有WebSocket服务器的Windows 7上使用。
请求显然失败了:
Firefox can't establish a connection to the server at ws://www.site.local/signalr?connectionData=
如何强制SignalR忘记Websockets并使用Long Polling,还是有办法为Windows 7设置我缺少的Websockets?
更新....我正在使用SignalR 0.4:
<package id="SignalR" version="0.4.0" />
<package id="SignalR.Hosting.AspNet" version="0.4.0.0" />
<package id="SignalR.Js" version="0.4.0.1" />
<package id="SignalR.Server" version="0.4.0.0" />
<package id="SignalR.StructureMap" version="0.4.1" />
答案 0 :(得分:30)
我在这里找到了答案:
https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client
基本上:
$.connection.hubs.start({ transport: 'longPolling' }, function() {
console.log('connection started!');
});
答案 1 :(得分:8)
要在服务器端禁用传输,必须使用以下内容:
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Transports;
using Owin;
namespace MyApplication
{
public static class Startup
{
public static void ConfigureSignalR(IAppBuilder app)
{
// If using the global dependency resolver
TurnOfForeverFrame(GlobalHost.DependencyResolver);
app.MapSignalR();
}
public static void TurnOfForeverFrame(IDependencyResolver resolver)
{
var transportManager = resolver.Resolve<ITransportManager>() as TransportManager;
transportManager.Remove("foreverFrame");
}
}
}
@ reach4thelasers'解决方案仅在客户端禁用它,但客户端可以重新启用传输和连接。
干杯。
答案 2 :(得分:1)
对于任何希望使用asp.net core 3.1在服务器上禁用它的人:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chathub", options =>
{
options.Transports =
HttpTransportType.WebSockets |
HttpTransportType.LongPolling;
});
});
}