gpt4 book ai didi

azure - 404/signalr/negotiate 在 Azure 中部署的应用程序

转载 作者:行者123 更新时间:2023-12-02 00:04:15 25 4
gpt4 key购买 nike

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://(名称).azurewebsites.com/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22productsimporthub%22%7D%5D&_= 1472811629592

实际行为

/signalr/negotiate - 在本地主机上返回 200,但对于 azure 中部署的应用程序返回 404

/signalr - 适用于两者 - 协议(protocol)错误:未知传输。

/signalr/hubs - 适用于两者 - 正确返回 SignalR js

最佳答案

要找出问题的真正原因,您需要导航到协商网址并查找响应。

如果响应告诉您有关“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);
});


});

关于azure - 404/signalr/negotiate 在 Azure 中部署的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39897376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com