Исключение было вызвано целью вызова при создании экземпляра объекта

#sharepoint #signalr #signalr.client

#sharepoint #signalr #signalr.client

Вопрос:

Я весь день безрезультатно размышлял над этой проблемой. У меня есть требование интегрировать SignalR в решение фермы SharePoint (http://sharepoint-community.net/profiles/blogs/using-signalr-2-2-in-a-sharepoint-2013-farm-solution). Сама интеграция здесь не является проблемой, как только я смогу видеть события журнала при использовании пользовательского PersistentConnection с JS. Моя компания использует уровень обслуживания, основанный на HttpHandlers, отвечающих на пользовательские суффиксы и выполняющих некоторое отражение, чтобы узнать, какой метод вызывать на основе шаблона url. Все всегда работало отлично! Проблема возникает, когда в моем сервисном коде, который будет отправлять сообщения пользовательскому PersistentConnection, чтобы он мог транслироваться всем подключенным клиентам, я создаю экземпляр Microsoft.AspNet.SignalR.Клиент.Объект подключения.

 using Microsoft.AspNet.SignalR.Client;
// other usings
[Route] // Custom attribute
public object MyCustomServiceMethod() {
    try // LINE NUMBER: 5
    {
        // broadcast message to all connected clients
        var url = "CONNECTION URL"; // LINE NUMBER 8
        var connection = new Connection(url); // LINE NUMBER: 9
        connection.Start().Wait(); // LINE NUMBER: 10
        connection.Send(CUSTOM_MODEL_HERE).Wait(); // LINE NUMBER: 11

        return Ok(new // LINE NUMBER: 13
        {
            Status = "SOME STATUS CODE HERE",
            Data = SOME DATA HERE
        });
    }
    catch (Exception ex)
    {
       // some logging logic here
    }
}
 

Дело в том, что я получаю сообщение «Исключение было вызвано целью вызова». исключение и выполнение не запускают метод MyCustomServiceMethod. Забавно, что, когда я комментирую номера строк 9, 10 и 11, выполнение переходит к строке 13 и возвращает отлично. Мой проект sharepoint компилируется с .Net 4.5, поэтому я ссылался на версию 4.5 клиента SignalR (https://github.com/SignalR/SignalR/tree/dev/src/Microsoft .AspNet.SignalR.Client45). когда я оставляю вышеупомянутые строки без комментариев, выполнение кода даже не достигает точки останова в строке 5 внутри моего пользовательского метода обслуживания. Он генерирует исключение раньше в конвейере. Чего мне здесь не хватает?

Заранее спасибо!

Ответ №1:

Я нашел решение проблемы! Проблема заключалась в том, что я сгенерировал Microsoft.AspNet.SignalR.Клиент.dll из исходного кода, загруженного непосредственно с github, так что сгенерированная dll не была подписана. Как только я загрузил Microsoft.AspNet.SignalR.Клиент.dll из nuget, код выполнен отлично.