use*_*104 5 model-view-controller azure http-status-code-404 signalr asp.net-core
SignalR 在本地主机上工作,但在 Azure 中部署时不起作用
Asp.net Core 1.0.0 (.Net Framework 4.6.1)
SignalR.Core 2.2.1
public static void UseSignalR2(this IApplicationBuilder app)
    {
        app.UseAppBuilder(appBuilder => {
            appBuilder.MapSignalR(new HubConfiguration());
        });
        GlobalHost.HubPipeline.AddModule(new ErrorHandlingPipelineModule());
        GlobalHost.HubPipeline.AddModule(new LoggingPipelineModule());
    }
SignalR.js 2.2.1 使用默认设置
$.connection.hub.url = '/signalr';
200 为网址:
https://( name ).azurewebsites.com/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22productsimporthub%22%7D%5D&_=1472811629592
/signalr/negotiate - 在 localhost 上返回 200,但在 azure 中部署的应用程序返回 404
/signalr - 适用于两者 - 协议错误:未知传输。
/signalr/hubs - 适用于两者 - 正确返回 SignalR js
要找出问题的真正原因,您需要导航到协商 URL,并查找响应。
如果响应告诉您有关“ CryptographicException:数据保护操作失败...”的信息。这是修复方法。
1) 创建自定义 IDataProtectionProvider 
2) 配置信号器
internal class MachineKeyProtectionProvider : IDataProtectionProvider
{
    public IDataProtector Create(params string[] purposes)
    {
        return new MachineKeyDataProtector(purposes);
    }
}
internal class MachineKeyDataProtector : IDataProtector
{
    private readonly string[] _purposes;
    public MachineKeyDataProtector(string[] purposes)
    {
        _purposes = purposes;
    }
    public byte[] Protect(byte[] userData)
    {
        //return MachineKey.Protect(userData, _purposes);
        return userData;
    }
    public byte[] Unprotect(byte[] protectedData)
    {
        //return System.Web.Security.MachineKey.Unprotect(protectedData, _purposes);
        return protectedData;
    }
}
我使用katana 扩展方法将 IAppBuilder 桥接到 IApplicationBuilder。这允许您的owin中间件连接到asp.net core。使用RunSignalr方法很重要
app.UseAppBuilder(appBuilder =>
        {
            appBuilder.SetDataProtectionProvider(new MachineKeyProtectionProvider());
            appBuilder.Map("/signalr", map =>
            {
                var hubConfiguration = new HubConfiguration
                {
                    EnableDetailedErrors = true
                };
                map.RunSignalR(hubConfiguration);
            });
        });
| 归档时间: | 
 | 
| 查看次数: | 824 次 | 
| 最近记录: |