Сгенерированные URL-адреса кажутся неправильными

Я создал приложение со ссылками signalR в Visual Studio. Создал хаб. При запуске приложения в IIS Express все работает нормально. Когда я переношу его в IIS8, в firebug я вижу, что URL-адреса signalR неверны, например:

http://localhost/signalr/negotiate?connectionData=......

Проблема в том, что отсутствует имя сайта, должна быть:

http://localhost/MYSITE/signalr/negotiate?connectionData=......

Это скрипт, который я использую для инициализации соединения:

<script type="text/javascript">
        var proxy;

        $(function () {
            var connection = $.hubConnection();
            proxy = connection.createHubProxy('chatHub');
            proxy.on('newMessage', onNewMessage);
            connection.start();

            $('#send').click(onSend);
        });

        function onNewMessage(message) {
            $('#messages').append('<li>' + $('#message').val() + '</li>');
        }

        function onSend() {
            proxy.invoke('newMessage', $().val());
        }
    </script>

Я попытался отправить соединение с $.hubConnection(), но тогда имя сайта удваивается:

http://localhost/MYSITE/MYSITE/signalr/negotiate?connectionData=......

person eddyuk    schedule 23.08.2013    source источник
comment
Как выглядит ваш код для <script src="/signalr/hubs"></script>?   -  person Tim B James    schedule 24.08.2013


Ответы (1)


Используйте тильду для ссылки на корневой каталог приложения при включении скриптов/других ресурсов. У меня аналогичная настройка, и это работает для меня в средах разработки и производства:

<script src="~/Scripts/jquery.signalR-1.1.2.js" type="text/javascript"></script>
<script src="~/signalr/hubs" type="text/javascript"></script>
person mechenbier    schedule 23.08.2013
comment
Нет, к сожалению, это не проблема, это набор: ‹script src=~/Scripts/jquery.signalR-2.0.0-rc1.js›‹/script› ‹script src=/signalr/hubs›‹/script› Кстати, это происходит и с версией 1.1.3. - person eddyuk; 24.08.2013
comment
@eddyuk в вашем /signalr/hubs JavaScript нет тильды перед ним. - person mechenbier; 24.08.2013
comment
Кроме того, я только что узнал, что если я использую соединение без прокси, мне не нужно ~/signalr/hubs в моем коде. И он работает с IIS Express. Когда я перехожу на IIS7.5 или 8, по какой-то причине он переходит на localhost/signalr без имени приложения. - person eddyuk; 25.08.2013
comment
Просто для удовольствия, как выглядит ваш метод application_start в вашем файле global.asax? Вам необходимо вызвать RouteTable.Routes.MapHubs() перед любыми другими вызовами маршрутизации в application_start. - person mechenbier; 25.08.2013