Подключение концентратора SignalR в проекте MVC с аутентификацией из консольного приложения с помощью клиента SignalR - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть проект MVC, содержащий концентратор SignalR, к которому могут подключиться только аутентифицированные пользователи. Класс Hub в моем проекте MVC выглядит следующим образом:

[Authorize]
public class DataHub : Hub
{
    public void Send(string message)
    {
        ...
    }
}

Мне нужно подключиться к этому концентратору в локальном проекте консольного приложения. Мне удалось войти в систему MVC, используя следующий код:

CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;

HttpClient client = new HttpClient(handler);
var respTxt1 = client.GetStringAsync("https://localhost:44372/").Result;
// Finding __RequestVerificationToken in login view page.
respTxt1 = respTxt1.Substring(respTxt1.IndexOf("\"__RequestVerificationToken\""));
respTxt1 = respTxt1.Substring(respTxt1.IndexOf("value=\""));
respTxt1 = respTxt1.Substring(respTxt1.IndexOf("\"") + 1);
var __RequestVerificationToken = respTxt1.Substring(0, respTxt1.IndexOf("\""));

var values = new Dictionary<string, string>{
            { "Username", "*My Registered Username*" },
            { "Password", "*Password*" },
            { "__RequestVerificationToken", __RequestVerificationToken }
};
var content = new FormUrlEncodedContent(values);
var resp2 = client.PostAsync("https://localhost:44372/Account/Login?", content).Result;

Я проверил эту часть кода, и она работает хорошо. У меня вопрос, как я могу использовать этот зарегистрированный клиент, чтобы установить sh соединение с моим концентратором SignalR. Я пробовал следующий код, и он не работает:

var signalrConnection = new HubConnection("https://localhost:44339/");
signalrConnection.CookieContainer = cookies; // cookies is initiated in the previous codeblock
IHubProxy myHub = signalrConnection.CreateHubProxy("DataHub");
signalrConnection.Start().Wait();

Возникшее исключение говорит SocketException: не может быть установлено соединение, потому что целевая машина активно отказала ему 127.0.0.1:44339

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...