SignalR - 无法处理connectionToken - 密钥无法在指定状态下使用

时间:2016-11-23 12:26:04

标签: .net signalr system.security

我使用Windows应用程序托管SignalR应用程序。我知道,长篇故事,自我托管更容易。
它运行正常 - 但昨天,当我在Visual Studio中以调试模式运行它时,在连接尝试后我得到400错误The ConnectionId is in the incorrect format.
我看着原木 - 没什么。然后我启用了跟踪并找到了:

SignalR.HubDispatcher Information: 0 : Failed to process connectionToken: System.Security.Cryptography.CryptographicException: Key not valid for use in specified state.

   at System.Security.Cryptography.ProtectedData.Unprotect(Byte[] encryptedData, Byte[] optionalEntropy, DataProtectionScope scope)
   at System.Security.Cryptography.DpapiDataProtector.ProviderUnprotect(Byte[] encryptedData)
   at System.Security.Cryptography.DataProtector.Unprotect(Byte[] encryptedData)
   at Microsoft.Owin.Security.DataProtection.DpapiDataProtector.Unprotect(Byte[] protectedData)
   at Microsoft.AspNet.SignalR.Infrastructure.DataProtectionProviderProtectedData.Unprotect(String protectedValue, String purpose)
   at Microsoft.AspNet.SignalR.PersistentConnection.TryGetConnectionId(HostContext context, String connectionToken, String& connectionId, String& message, Int32& statusCode)

任何想法如何解决?
我看了谷歌一个小时 - 每个人都在谈论网络农场,证书存储和负载均衡器。我相信,我没有任何相关的东西。
我在Windows 7上使用带有SignalR 2.2.1的.NET 4.5。如果重要的话,浏览器和VS都是从同一个Windows帐户启动的

1 个答案:

答案 0 :(得分:0)

因此,事实证明问题是(至少在我们的情况下)是信号源用于持久性的Redis服务器的缺席。在我们设置之后 - 问题就消失了。
不确定如何连接到机器密钥,Web场和一般的加密