2012-01-19 37 views
13

Estoy buscando la respuesta rápida y sucia. Solo estoy en blanco, y después de mirar una pantalla durante más de 12 horas, creo que me dispararon.SignalR - StartUp

Quiero hacer una aplicación simple SignalR como tutorial. Encontré esto example, pero sigo recibiendo el error de que las entradas no están definidas. He encontrado un par más y sigo teniendo el mismo error. Comparé el proyecto de muestra con el mío y no puedo encontrar ninguna discreción.

Parece que $.connection.ticketHub o $.connection.chat devuelven objetos indefinidos. ¿Hay algo especial que deba hacer con /signalr/hubs? Cualquier otro pensamiento es muy apreciado.

+0

debe agregar este código de script en la página. Porque signalR necesita ejecutar la definición del código del script. – sinanakyazici

+0

¿Dónde está tu código? Podría hacer que sea más fácil decirle qué sucede si realmente pudiéramos verlo. – rball

+0

Tengo el mismo problema y me he resuelto esta pregunta: http://stackoverflow.com/questions/8941595/signalr-signalr-hubs-giving-404-error –

Respuesta

14

Necesita agregar/signalr/hubs a la página, es un javascript dinámicamente generado por SignalR que contiene los stubs de métodos para sus hubs y los métodos en los hubs.

Así que si usted tiene un NET-hub llamado TestHub, con un método llamado SendMessage(string message) Javascript se generará de manera que pueda de JavaScript llamada: $.connection.testHub.sendMessage("some message to server");

escribir en el navegador la url:/signalr/concentradores y deberías obtener un javascript

alrededor de 150 líneas más abajo, verá el talón de ticketHub:

$.extend(signalR, { 
    ticketHub: { 
     _: { 
      hubName: 'YourNameSpace.TicketHub', 
      ignoreMembers: ['someMethod', 'namespace', 'ignoreMembers', 'callbacks'], 
      connection: function() { return signalR.hub; } 
     }, 

Puede utilizar Mozilla complemento Firebug o Chrome herramientas de desarrollo (llave-icono-> Herramientas> Herramientas de Desarrollo) para ver lo que se envía y se regresó del servidor.

EDITAR: Hubo un error en SignalR prevention/signalr/hubs para generarse correctamente (no generó los stubs del método). https://github.com/SignalR/SignalR/issues/134

Edit2: usted podría tener una etiqueta de secuencia de comandos incorrectos, intente:

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script> 

o no ha indicado el ensamblado SignalR.AspNet.dll. Si recuerdo correctamente, es ese conjunto que conecta la ruta a/signalr.

+0

sí, está en lo correcto, obtengo un 404 de/solicitud signalr/hubs. el problema que me señalaste mostró una solución, pero descargar el archivo del proyecto y compilarlo no solucionó el problema. – bdparrish

+0

actualizó la respuesta con respecto a usted obteniendo un 404, vea EDIT2 – MatteKarla

+0

Ahora estoy obteniendo esto después de agregar 'SignalR.AspNet.dll' ...' No se pudo cargar el tipo 'SignalR.IJsonSerializer' del ensamblado 'SignalR, Version = 1.0. 0.0, Culture = neutral, PublicKeyToken = null'. – bdparrish

3

¿Estás utilizando IE8?

Si es así, asegúrese de incluir una referencia Json2 script anterior el guión signalR:

<script src="../../Scripts/json2.min.js" type="text/javascript"></script> 

(Obtener Json2 de Nuget)

2

Cambiar la etiqueta de script a esto:

<script type="text/javascript" src='<%= ResolveClientUrl("~/signalr/hubs") %>'></script> 
2

Con Visual Studio 2010/MVC 3/navegador Firefox, mi Index.cshtml está utilizando SignalR muy bien con el siguiente

<script src="@Url.Content("~/Scripts/jquery-1.8.0.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.signalR-0.5.2.min.js")" type="text/javascript"></script> 

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

Tuve otro problema, pero no tuve que agregar el @ Url.Content al signalr/hubs Para simplificar las pruebas, también tengo mi archivo de clase en la raíz de la carpeta Controladores. que también tienen las siguientes opciones en Nuget

SignalR/SignalR.Js/SignalR.Server/SignalR.Hosting.AspNet/SignalR.Hosting.Common 

(No es que se necesitan todas esas dependencias, pero eso es lo que tengo)

la esperanza de que ayude a alguien ...

3

Lee Smiths respuesta estaba justo en el dinero. Tengo la última json2 de Nuget y también asegurarse de que usted tiene el cambio en su web.config del sitio de la AYUDA signalR:

 <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    </system.webServer>