С помощью моего друга я нашел причину этой проблемы и исправил ее. На самом деле javascript не знает, размещено ли приложение в корневой папке или подпапке (в виртуальном каталоге). Он всегда указывает на корневую папку.
Поэтому, когда мы инициализируем его в js следующим образом (новый signalR.HubConnection ("/ chat")), он указывает на корневой каталог, как показано ниже,
http://localhost:100/chat?userId=1
Поскольку javascript не знает о хостинге IIS, нам нужно указать относительный путь из c #. Таким образом, я получаю базовый путь моего приложения следующим образом в контроллере,
ViewData["PathBase"] = Request.PathBase.ToString();
И если у него есть какое-то значение, я просто добавляю его к «/ chat», в противном случае я просто инициализирую его как «/chat» .
var connection = new signalR.HubConnection("/development/chatapp/source/chat");
Это решает мою проблему: -)