Ошибка 500 в $.connection.hub.start(). Done()
Внутри моего существующего приложения запрос get к http://localhost:xxx/signalr/negotiate возвращает 500, о которых я не могу получить больше информации, чтобы найти фактическую причину.
Я попытался создать новый проект MVC и настроить SignalR - это работает.
Я попытался использовать примеры проектов и настроить использование моей службы сигнализации, и они тоже работают.
Как на диагностических инструментах, так и на портале анализа приложений я не вижу больше информации о причинах этой ошибки. 500
Кроме того, инструменты разработчика в Chrome не дают мне больше информации
Его длина, но лучшее, что я могу отследить, - это журнал IISExpress, в котором есть следующая ошибка, заставляющая меня думать, что это как-то связано с разрешениями / доступом, которые применяются моим приложением, но я застрял в том, с чего начать поиск,
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/>
<EventID>0</EventID>
<Version>1</Version>
<Level>3</Level>
<Opcode>16</Opcode>
<Keywords>0x100</Keywords>
<TimeCreated SystemTime="2019-04-11T09:01:02.344Z"/>
<Correlation ActivityID="{80000052-0004-FF00-B63F-84710C7967BB}"/>
<Execution ProcessID="18156" ThreadID="13096"/>
<Computer>DESKTOP-SQ9UCSB</Computer>
</System>
<EventData>
<Data Name="ContextId">{80000052-0004-FF00-B63F-84710C7967BB}</Data>
<Data Name="ModuleName">__DynamicModule_Microsoft.Owin.Host.SystemWeb.OwinHttpModule, Microsoft.Owin.Host.SystemWeb, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35_ed612830-d174-4c74-ba1f-93c69902f2c6</Data>
<Data Name="Notification">4</Data>
<Data Name="HttpStatus">500</Data>
<Data Name="HttpReason">Internal Server Error</Data>
<Data Name="HttpSubStatus">0</Data>
<Data Name="ErrorCode">0</Data>
<Data Name="ConfigExceptionInfo"></Data>
</EventData>
<RenderingInfo Culture="en-GB">
<Opcode>MODULE_SET_RESPONSE_ERROR_STATUS</Opcode>
<Keywords>
<Keyword>RequestNotifications</Keyword>
</Keywords>
<freb:Description Data="Notification">AUTHORIZE_REQUEST</freb:Description>
<freb:Description Data="ErrorCode">The operation completed successfully.
(0x0)</freb:Description>
</RenderingInfo>
<ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
<EventGuid>{002E91E3-E7AE-44AB-8E07-99230FFA6ADE}</EventGuid>
</ExtendedTracingInfo>
</Event>
Любая помощь будет принята с благодарностью!
Спасибо том
Для справки, это код, который я использую
Концентратор - это базовая установка с одной функцией
public void Send(string messageText)
{
Clients.All.broadcastMessage(messageText);
}
В моем файле setup.cs я следовал базовой реализации, но добавил некоторую дополнительную отладку (не то чтобы это помогло!)
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
GlobalHost.HubPipeline.AddModule(new ErrorHandlingPipelineModule());
app.MapAzureSignalR("/AzureSignalr", this.GetType().FullName, new HubConfiguration()
{
EnableDetailedErrors = true,
EnableJSONP = true
});
GlobalHost.HubPipeline.RequireAuthentication();
}
private class ErrorHandlingPipelineModule : HubPipelineModule
{
protected override void OnIncomingError(ExceptionContext exceptionContext, IHubIncomingInvokerContext invokerContext)
{
throw exceptionContext.Error;
}
}
Наконец, снова в своем html-файле я следовал базовой реализации, но я также попытался явно установить URL-адрес и снова добавил больше отладки.
<script src="/Scripts/jquery-3.3.1.js"></script>
<script src="/Scripts/jquery.signalR-2.4.0.js"></script>
<script src="/AzureSignalr/hubs"></script>
<script type="text/javascript">
$(function () {
var messages = $.connection.myHub;
messages.client.broadcastMessage = function (message) {
alert(message);
};
$.connection.hub.url = 'http://localhost:57690/AzureSignalr';
$.connection.hub.connectionSlow(function () {
console.log('We are currently experiencing difficulties with the connection.')
});
$.connection.hub.error(function (error) {
console.log('SignalR error: ' + error)
});
$.connection.hub.start().done();
});
</script>
1 ответ
Мне удалось найти решения для этого сейчас, с кредитом на другой вопрос здесь; Подключение службы Azure SignalR не активно
Я изменил свой startup.cs, чтобы он был следующим;
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
app.MapAzureSignalR("/AzureSignalrPath", this.GetType().FullName, new HubConfiguration());
}
}
Важным фактором был протокол безопасности