Внезапная смерть SignalR - внутренняя ошибка сервера 500 - PullRequest
0 голосов
/ 05 августа 2020

Я ломал голову, чтобы выяснить, что произошло. Мой сервер SignalR, кажется, работает нормально, я могу использовать JQuery для подключения к концентратору, как показано ниже

 $.connection.hub.url = "https://mysite.azure/signalr/hubs/";        
        $.connection.hub.logging = true;
        var hub = $.connection.airP2P;
        var token = "abcd";
        $.connection.hub.qs = { 'access_token': token };
        console.log("Connecting.....");
        $.connection.hub.start({ jsonp: isChrome })
            .done(function () {
                console.log("Connected to Hub!");                
            })
            .fail(function () { 
                console.log("Could not Connect to signal R hub!"); });

, но не в форме мое приложение Android, оно внезапно перестало работать и выдало мне 500 внутренних ошибок сервера, как показано ниже

StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, 
Content: System.Net.Http.HttpConnection+HttpConnectionResponseContent, 
Headers:
{
  Cache-Control: private
  Transfer-Encoding: chunked
  Server: Microsoft-IIS/10.0
  X-AspNet-Version: 4.0.30319
  X-Powered-By: ASP.NET
  Set-Cookie: ARRAffinity=9865c22a2d9f2f551f361f12a9fa85ff22f916bd5bee09cf0caa99ac24419d10;Path=/;HttpOnly;Domain=mysite.azure
  Date: Wed, 05 Aug 2020 06:55:09 GMT
  Content-Type: text/html; charset=utf-8
}

Мой код следующий

var querystringData = new Dictionary<string, string>
{
   { "access_token", User_Auth_Token }
};

hubConnection = new HubConnection("https://mysite.azure/signalr", querystringData);
mhubProxy = hubConnection.CreateHubProxy("myHubName");
await hubConnection.Start();

Точно такой же код работал нормально, просто вдруг перестало работать, есть идеи?

1 Ответ

0 голосов
/ 05 августа 2020

Согласно @CodeCaster, просматривая журналы сервера, я обнаружил эту ошибку

System.ArgumentNullException: Value cannot be null. Parameter name: key at System.Collections.Generic.Dictionary2.FindEntry(TKey key)
at Microsoft.AspNet.SignalR.Hubs.HubDispatcher.AuthorizeRequest(IRequest request)
at Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(IDictionary2 environment) at Microsoft.Owin.Mapping.MapMiddleware.d__0.MoveNext()

Это происходит, когда вы запускаете приложение Xamarin с Linker, как описано в следующем вопросе

после архива xamarin android signalr не работает

Чтобы решить эту проблему, мне пришлось отключить компоновщик в моих настройках сборки. Я все еще не уверен, как правильно решить эту проблему, так как отключение компоновщика резко увеличивает размер APK

Более подробную информацию можно найти здесь https://docs.microsoft.com/en-sg/xamarin/android/deploy-test/linker

...