signalr visual-studio-2012 .net-4.5

SignalR: $.connection no está definido



visual-studio-2012 .net-4.5 (9)

A la inversa de Juan,

Tuve que agregar un / a la declaración signalr / hubs

es decir.

<script src="signalr/hubs" type="text/javascript"></script>

Convirtió

<script src="/signalr/hubs" type="text/javascript"></script>

Estoy usando Visual Studio 2012 Ultimate RC, SignalR 0.5.1 y Jquery 1.7.2 en una aplicación MVC4.

He mirado: MVC4 SignalR "signalr / hubs" 501 No implementado Error

Pero no afecta mi problema (estoy usando IIS Express para depurar).

Cuando intento utilizar SignalR, la variable $ .connection no está definida. Mi código del lado del servidor:

[HubName("tenantHub")] public class TenantHub : Hub { ... void TenantChange(CrudAction action, Tenant tenant) { Clients.eventOccurred(action.ToString(), tenant); } }

Lado del cliente:

$(function() { var test = $.connection.tenantHub; });

SignalR/hubs hace referencia a SignalR/hubs lado del cliente y puedo ver el código JS, no produce ningún error. Pero al hacer referencia a $ .connection se produce un Uncaught TypeError: Cannot read property ''tenantHub'' of undefined . También trató de hacer el ejemplo de chat predeterminado, da el mismo error. ¿SignalR no es compatible cuando se utiliza en VS2012 o simplemente estoy siendo estúpido?


Asegúrese de que no tiene un nombre de hub duplicado; [HubName ("tenantHub")] - es decir, dos o más clases de hub decoradas con el mismo nombre.


Esto usualmente se debe a la carga de jQuery dos veces. Por lo general, tenemos la costumbre de cargar el jQuery en el pie de página. Dado que el signalr se queja y te obliga a incluir la biblioteca jQuery antes del signalr-x.js.

Puede incluir el jQuery antes del signalr-x.js y puede hacer algo como esto en el pie de página donde incluye el complemento jQuery para evitar cargarlo dos veces:

<script type="text/javascript"> !window.jQuery && document.write(''<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><//script>''); !window.jQuery && document.write(''<script src="/public/js/vendor/jquery-1.9.1.min.js"><//script>''); </script>

Espero que esto ayude. :)


Intente eliminar el BundleConfig.RegisterBundles(BundleTable.Bundles); de Global.asax.cs , y ver si eso ayuda?



Intente quitar [HubName("tenantHub")] de su clase. El mío no funcionaría si tuviera esos allí. También intente colocar sus concentradores en una carpeta llamada "Hubs" en la raíz de su proyecto.


Si ninguno de estos le funciona, asegúrese de que en su fuente HTML final no solo aparezca la referencia al script SignalR después de jQuery, sino también que la versión coincida con el archivo real que tiene en su carpeta de scripts.

<script src="~/Scripts/jquery.signalR-2.0.2.js"></script>

Por ejemplo, esta versión coincide con la versión 2.0.2 de SignalR. Si actualiza SignalR a través del paquete, tendrá que editar esta línea manualmente.


Tuve el mismo problema en VS2012 RTM.

El problema fue que primero agregué signalr en BundleConfig.cs y esperé que simplemente funcionara. Pero luego, al usar ''Ver código fuente'' en el navegador, noté que se incluyó signalr.js antes que jquery.js. signalr.js se incluyó en la parte superior de la página, jQuery se incluyó en la parte inferior de la página.

Después de algunos problemas con BundleConfig signalr.js se incluyó después de jquery.js, ¡y ahora signalr funciona como un encanto!


Tuve un problema similar, el mío estaba trabajando en la depuración de Visual Studio 2010 pero no en localhost (IIS7.5 Windows 7). Descubrí que tenía una barra adicional en la definición de "signalr / hubs", estaba usando "/ signalr / hubs". También agregué la referencia JSON 2 js para la compatibilidad del navegador. Tenga en cuenta que el orden de declaración de .js es importante.

<script src="Scripts/JSON2.js" type="text/javascript"></script> <script src="http://code.jquery.com/jquery-1.8.2.min.js" type="text/javascript"></script> <script src="Scripts/jquery.signalR-1.1.2.min.js" type="text/javascript"></script> <script src="signalr/hubs" type="text/javascript"></script> <script type="text/javascript">

Para encontrar este problema, activé el registro de la siguiente manera y busqué en la consola de las herramientas dev para ver el error cuando se implementaba en localhost.

// Logs errors to the browser dev ''f12'' console $.connection.hub.logging = true;

Espero que esto ayude a alguien más. Estoy jugando con Chrome, IE9, 10 en varias PC ahora - ¡qué gran biblioteca!