SignalR: произошла ошибка при вызове метода концентратора " XXX"
сервер:
public void AddLine(string line)
{
Clients.Others.addLine(line);
}
клиент .NET:
await rtHubProxy.Invoke("AddLine", "lineInfo");
исключения:
InvalidOperationException: There was an error invoking Hub method 'xxx.AddLine'.
на самом деле, я пытался вызвать метод со сложным объектом, только чтобы найти исключение. Поэтому я изменил тип параметра и оставил тело AddLine() пустым для целей отладки, что, как ни странно, все равно вызвало то же исключение.
у меня также есть другой вызов SignalR на стороне клиента, всего несколько строк выше, который работает отзывчиво без ошибок. Соответствующий серверный код выглядит следующим образом:
public void Hello(string text)
{
Clients.All.hello(text);
}
может кто-нибудь узнать, где я ошибся? Я отлаживал более 4 часов и до сих пор не могу найти отмену даже после того, как я упростил код.
(орфография строго проверяют, совпадают.)
2 ответов
очевидно, что у вас есть некоторые проблемы на стороне сервера. Но чтобы узнать, в чем проблема, вам нужно увидеть подробную ошибку. По соображениям безопасности SignalR не дает вам подробную ошибку по умолчанию. Но вы можете отредактировать свой код, чтобы получить подробную ошибку.
сначала вам нужно добавить этот код в Startup.cs:
var hubConfiguration = new HubConfiguration();
hubConfiguration.EnableDetailedErrors = true;
app.MapSignalR(hubConfiguration);
затем, чтобы показать ошибку на стороне клиента, вам нужно добавить этот код в свой проект:
$.connection.hub.error(function (error) {
console.log('SignalR error: ' + error)
});
Так Просто, и ты хороший, чтобы пойти.
иногда вы даже не добираетесь до клиентской части, чтобы увидеть ошибку. Но, выполнив первую часть, вы включите подробную ошибку, и вы можете увидеть ошибки в ответе SignalR. Вам просто нужен инструмент, как Chrome Browser Web Developer Tool, который дает вам сетевую часть операции, где все состояние передачи данных регистрируются. вы можете проверить ошибки SignalR там. Информация в журнале будет очень подробной и полезной.
Это пример отладки с браузером Chrome для людей, которые видят ошибки SignalR через инструмент отладки Chrome:
Скачать Полный Размер Изображения
Дайте мне знать, если у вас есть другие проблемы о том, что.
для дополнительной информации перейдите по ссылке: Ошибки SignalR
хорошо, после 2 часов и половины скалистой отладки, я, наконец, узнал правду, понимая, что weiredly, однако я изменил свой серверный код, механизм под прикрытием или функциональные возможности каким-то образом не синхронизировались, пока я случайно не перестроил проект и ждал, что IIS Express снова прогреется.
Это не ошибка SignalR, но Visual Studio, я думаю. Каждый раз, когда я делаю некоторые изменения в классе-концентраторе, мне приходится перестраивать серверный проект. Вот и все. Мне пришлось скажем, это действительно больно, хотя я не знаю, почему это должно произойти - может быть, потому, что мое решение состоит из WinRT и ASP.NET проект, который не ладится? Я не знаю.
FYI, я прикреплю ссылку на сообщение, в котором аналогичная проблема "перестроения" произошла с кем-то другим.
http://forum.kooboo.com/yaf_postst2250_How-to-use-SignalR-in-a-Module.aspx
и обходной путь на данный момент более чем прост - просто идите и ВОССТАНОВИТЬ.