2012-02-16 17 views

Respuesta

18

El ejemplo está desactualizado. Se debe a que el proyecto MVC predeterminado llama a RegisterRoutes (RouteTable.Routes); usted tiene que mover el MapConnection al interior de las RegisterRoutes, después de la routes.IgnoreRoute ("{} recursos .axd/{*} Pathinfo"; pero antes de cualquier otra vía

espero que esto ayude a

.
+1

Lo intenté, pero sigo recibiendo un 404. –

+0

Intenté implementar SignalR con la misma muestra pero experimenté el mismo problema. El/echo/negotiate todavía está 404'ing .. ¿Alguien puede ayudar? – KevinIsNowOnline

+0

Intente leer mi solución nuevamente, es el orden de RegisterRoutes que es importante –

3

que tiene exactamente el mismo error al intentar aplicar la muestra conexión persistente básica, y me tomó bastante tiempo para darse cuenta de que era debido a un conflicto de versiones para Newtonsoft.Json, problema y solución descrita aquí:

https://github.com/SignalR/SignalR/issues/195

es decir, añadir una sección como:

<dependentAssembly> 
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
<bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.0.8.0" /> 
</dependentAssembly> 

a su web.config.

No sé por qué esa sección me faltaba, por lo que entiendo, debe agregarse automáticamente por nuget, tal vez algo relacionado con Visual Studio 11 beta. De todos modos, fue la solución a mi problema.

+0

gracias amigo, me llevó un tiempo darme cuenta de esto, si pudiera darle mil puntos lo haría –

+0

Loco, tuve el mismo problema. Localmente, mi aplicación estaba bien, pero estaba obteniendo 404 al llamar al señalizador. Agregué esto en mi web.config en el servidor y poof: trabajando. – Kywillis

0

hay dos pasos: 1. En
web.config añadir o editar regla de JSON

<dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" 
publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
<bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.0.8.0" /> 
</dependentAssembly> 


2. En Global.asax Añadir nueva:

RouteTable.Routes.MapConnection<ChatConnection>("negotiate", "/chat"); 


En el método protected void Application_Start(){}

¡Buena suerte!