Я использую SignalR 1.1.2, и у меня проблема с методом async hub. Все работает отлично на моем ПК с транспортом ForeverFrame, но после развертывания на сервере и перехода на перенос веб-сокетов я получаю следующую ошибку:
Асинхронная операция не может быть запущена в это время. Асинхронные операции могут запускаться только в асинхронном обработчике или модуле или во время определенных событий в жизненном цикле страницы. Если это исключение произошло при выполнении страницы, убедитесь, что страница отмечена <% @Page Async = "true" % > .
Мой код метода хаба:
public async Task<string> getUrl()
    {
        var url = await MyWebservice.GetMyRoomUrlAsync(Context.User.Identity.Name);
        return url;
    }
Поддерживаются ли асинхронные методы в SignalR с переносом веб-сокетов?
Обновление: Код GetMyRoomUrlAsync:
public static Task<string> GetMyRoomUrlAsync(string email)
    {
        var tcs = new TaskCompletionSource<string>();
        var client = new Onif40.VisualStudioGeneratedSoapClient();
        client.GetRoomUrlCompleted += (s, e) =>
        {
            if (e.Error != null)
                tcs.TrySetException(e.Error);
            else if (e.Cancelled)
                tcs.TrySetCanceled();
            else
                tcs.TrySetResult(e.Result);
        };
        client.GetRoomUrlAsync(email);
        return tcs.Task;
    }
После того, как Стивен Клири разъяснил мне, в чем проблема, решая его, переписывая EAP в APM, было тривиально.
public static Task<string> GetMyRoomUrlAsync(string email)
    {
        var tcs = new TaskCompletionSource<string>();
        var client = new Onif40.VisualStudioGeneratedSoapClient();
        client.BeginGetRoomUrl(email, iar =>
        {
            try
            {
                tcs.TrySetResult(client.EndGetRoomUrl(iar));
            }
            catch (Exception e)
            {
                tcs.TrySetException(e);
            }
        }, null);
        return tcs.Task;
    }