Got it working. Мне нужно было использовать appBuilder. SetDataProtectionProvider
app.UseAppBuilder(appBuilder =>
{
appBuilder.SetDataProtectionProvider(new MachineKeyProtectionProvider());
appBuilder.Map("/signalr", map =>
{
var hubConfiguration = new HubConfiguration
{
EnableDetailedErrors = true
};
map.RunSignalR(hubConfiguration);
});
});
Я использую методы расширения катана для преодоления IAppBuilder к IApplicationBuilder. Это позволяет вашему промежуточному программному обеспечению owin подключаться к ядру asp.net. Важно использовать метод RunSignalr.
внутренний класс MachineKeyProtectionProvider: IDataProtectionProvider { общественного IDataProtector Создать (PARAMS строка [] цели) { возвращают новые MachineKeyDataProtector (цели); }}
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;
}
}
Это очень неуверенно. Вы можете прочитать, как защита данных используется для шифрования токена подключения здесь: https://www.asp.net/signalr/overview/security/introduction-to-security#connectiontoken. Я думаю, что вы можете отсутствовать, это машинный ключ. – Pawel
@Pawel: Я согласен, что это небезопасно. Забыл сказать, что это решение действительно не подходит для производственных условий. –