服务器上的SignalR错误500 - asp.net

时间:2017-02-21 22:15:57

标签: asp.net-mvc signalr signalr-hub internal-server-error

我有一个简单的聊天应用程序在本地工作正常,但SignalR远程抛出内部服务器错误。

抛出错误的脚本如下所示:

  

http://mydomainname.com/signalr/negotiate?clientProtocol=1.5&connectionData ...

这是日志: enter image description here

我已经查看了类似主题的其他答案,但似乎没有一个对我有用。 以下是我引用的答案:SignalR Negotiate 404SignalR Negotiate 404 on Subdomain

以下是客户端代码:

$(function () {
                // Reference the auto-generated proxy for the hub.
                $.connection.hub.url = 'http://mydomainname.com/signalr';
                $.connection.hub.logging = true;

                var chat = $.connection.chatHub;

                var name = '<%= username%>'
                // Create a function that the hub can call back to display messages.
                chat.client.addNewMessageToPage = function (name, message) {
                    // Add the message to the page.
                    bootbox.alert({
                        message: "<b>" + name + "</b>: " + message,
                    });
                };

                chat.client.sendMessage = function (name, message) {
                    // Add the message to the page.
                    $('#discussion').append('<li><strong>' + htmlEncode(name)
                       + '</strong>: ' + $('#message').val() + '</li>');
                };
                // Start the connection.
                $.connection.hub.start().done(function () {
                   // code to append message omitted.
                });
});

在导航到错误链接时,我会收到一个加密异常,如下所示:SignalR CryptographicException on AzureWebsites。这个问题有解决方案吗?

我使用的是asp.net 4.5和SignalR 2.我尝试了很多东西,但我不确定为什么会出现内部服务器错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

就像@Pawel在上面的评论中所说,问题是http://mydomainname.com/signalr/negotiate返回500错误:在这种情况下加密例外。

我设法通过添加Microsoft.AspNetCore.DataProtection.SystemWeb包解决了这个问题 - 如下所述:https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/compatibility/replacing-machinekey