Я продолжаю получать эту ошибку в своем JavaScript независимо от того, какое исправить я пытаюсь. Это почти похоже на то, что $ .connection не распознается, хотя у меня есть все библиотеки SignalR JavaScript в моем _layout. Я получаю следующую ошибку в консоли браузера Chrome: Uncaught TypeError: «Невозможно прочитать свойство« multipleFileHub »неопределенного индекса: 508 (анонимная функция) Индекс: 508 x.event.dispatch jquery-2.0.2.js: 4692 y.handle jquery-2.0.2.js: 4376 «undefined».SignalR Hubs: ошибка времени выполнения JavaScript: невозможно получить свойство «multipleFileHub» свойства неопределенной или нулевой ссылки
Имеет ли значение, что мой Global.asax наследуется от «StsMvcHttpApplication», а не стандартного «System.Web.HttpApplication»? И в моем случае , Я должен поместить «RouteTable.Routes.MapHubs();» в свой метод «RegisterRoutes», а не «Application_Start», поскольку Application_Start не срабатывает достаточно быстро ... он начинает поиск контроллеров, если я помещаю его в приложение начало
Поблагодарите за помощь! ж кода макета, а затем все отдельные части кода:
_layout
@section head
{
@Scripts.Render("~/Scripts/Libs/jquery-2.0.2.min.js")
@Scripts.Render("~/Scripts/Libs/jquery-ui-1.10.3.min.js")
@Scripts.Render("~/Scripts/Libs/jquery.validate.min.js")
@Scripts.Render("~/Scripts/Libs/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/Libs/modernizr-2.6.2.js")
@Scripts.Render("~/Scripts/Libs/modernizr.custom.blobconstructor.js")
@Scripts.Render("~/Scripts/SidebarMenu.js")
@Scripts.Render("~/Scripts/BC_Common.js")
@Scripts.Render("~/Scripts/scene.layoutservice.js")
@Scripts.Render("~/Scripts/scene.dataservice.js")
@Scripts.Render("~/Scripts/jquery.signalR-1.1.2.min.js")
@Scripts.Render("~/signalr/hubs")
@Scripts.Render("~/Scripts/scene.startup.js")
}
INDEX.CSHTML
$('#dBtn').click(function() {
var docIds = sceneLayoutService.getSelection();
if (docIds.length === 0) {
alert("you need to select one");
return false;
} else {
var docIdsParam = jQuery.param(docIds.map(function (value) {
return { "name": "docIds", "value": value };
}));
// Proxy created on the fly
var test_connection = $.connection.multipleFileHub;
// Start the connection
$.connection.hub.start().done(function() {
test_connection.server.send("test");
});
}
return true;
});
SERVER КОД:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace Portal.Web.Hubs
{
[HubName("multipleFileHub")]
public class multipleFileHub : Hub
{
public void Send(string message)
{
// Call the addMessage method on all clients
Clients.All.addMessage(message);
}
}
}
global.asax ROUTING
public static void RegisterRoutes(RouteCollection routes)
{
RouteTable.Routes.MapHubs();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.Ignore("{*allpng}", new { allpng = @".*\.png(/.*)?" });
routes.Ignore("{*allgif}", new { allgif = @".*\.gif(/.*)?" });
routes.Ignore("{*alljpg}", new { alljpg = @".*\.jpg(/.*)?" });
routes.MapRoute(
"Error", // Route name
"Error/{action}/{id}", // URL with parameters
new {controller = "Error", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Landing", id = UrlParameter.Optional } // Parameter defaults
);
}
ВСЕ ССЫЛКИ НА JavaScript СТРАНИЦУ
<script src="/ConnectPortal/Scripts/Libs/jquery-2.0.2.min.js"></script>
<script src="/ConnectPortal/Scripts/Libs/jquery-ui-1.10.3.min.js"></script>
<script src="/ConnectPortal/Scripts/Libs/jquery.validate.min.js"></script>
<script src="/ConnectPortal/Scripts/Libs/jquery.validate.unobtrusive.min.js"></script>
<script src="/ConnectPortal/Scripts/Libs/modernizr-2.6.2.js"></script>
<script src="/ConnectPortal/Scripts/Libs/modernizr.custom.blobconstructor.js"></script>
<script src="/ConnectPortal/Scripts/SidebarMenu.js"></script>
<script src="/ConnectPortal/Scripts/BC_Common.js"></script>
<script src="/ConnectPortal/Scripts/scene.layoutservice.js"></script>
<script src="/ConnectPortal/Scripts/scene.dataservice.js"></script>
<script src="/ConnectPortal/Scripts/jquery.signalR-1.1.2.min.js"></script>
<script src="/ConnectPortal/signalr/hubs"></script>
<script src="/ConnectPortal/Scripts/scene.startup.js"></script>
У вас есть jQuery, включенный дважды на странице. Если вы используете MVC4, у вас, вероятно, есть jQuery на странице Layout и снова включайте его на странице SignalR. – davidfowl
Я поднял страницу с помощью Chrome Dev Tools и нашел только одну версию jquery-2.0.2.min.js. Я включил все библиотеки javascript, упомянутые выше. – TheDude
Это единственная причина, по которой я когда-либо видел эту ошибку. Вы можете попробовать удалить страницу макета и посмотреть, можете ли вы заставить ее работать с минимальными сценариями, необходимыми для этой конкретной страницы с помощью signalr. – davidfowl