2010-11-13 15 views
5

Tengo una aplicación web de mvc 3, pero mi empresa de alojamiento web compartido solo admite MVC 2. Implementé mvc 3 dlls relacionados también, y funcionó bien en el servidor hasta que fue mvc 3 beta.Error de registro de filtro global en MVC 3 RC

Ayer, actualicé mi entorno de PC al mvc 3 RC y reconstruí mi aplicación web. La aplicación funciona bien en mi PC local, pero cuando la despliego y la ejecuto en el servidor de alojamiento, comete un error.

[MissingMethodException: Method not found: 'Void System.Web.Mvc.GlobalFilterCollection.Add(System.Object)'.] 
Myweb.MvcApplication.RegisterGlobalFilters(GlobalFilterCollection filters) in c:\my\Global.asax.cs:18 
Myweb.MvcApplication.Application_Start() in c:\my\Global.asax.cs:36 

Como se puede ver, cuando intento registrar filtro global en global.asax, que dice que no puede encontrar el método Mvc.GlobalFilterCollection.Add (objeto).

Si no registro ningún filtro global, toda la web funciona bien en el servidor de alojamiento.

¿Cómo puedo resolver este error?

editar: Parece que el mvc3 beta está registrado en el GAC del servidor de alojamiento. Dijeron que no, pero verifiqué la ubicación del System.Web.Mvc.dll al que se hace referencia en mi aplicación.

+0

¿Puede indicar qué DLL implementó en el servidor? En MVC 3 ahora hay varias DLL que deben implementarse, incluidas System.Web.WebPages y muchas otras. Prácticamente todo lo que no está en .NET Framework tendrá que implementarse en el directorio bin del hoster. – Eilon

+0

@Eilon, había desplegado estas cosas. [System.Web.Mvc (ver.3), Microsoft.Web.Infrastructure.dll, System.Web.Helpers, System.Web.Razor, System.Web.WebPages, System.Web.WebPages.Razor]. –

+0

@Eilon, pero incluso después de eliminar esos dlls de arriba, mi MVC 3 con web basado en Razor se está ejecutando. Me preguntaba si ya están instalados en el servidor GAC, pero la persona de soporte técnico dijo que no. ¿Debería reciclarse el conjunto de aplicaciones para que tenga efecto sobre los dlls eliminados? –

Respuesta

5

Según su descripción, parece que tiene una coincidencia entre la versión de MVC 3 que está utilizando en su máquina y la versión que está cargada en su servidor. Cambiamos los parámetros para GlobalFilterCollection.Add y parece que estás compilando tu aplicación en tu PC usando MVC 3 RC, sin embargo, la estás implementando en un servidor que tiene MVC 3 Beta. Asegúrese de que la versión de System.Web.Mvc.dll es la correcta en su servidor.

Editar: Para confirmar el comentario de Eilon, si MVC 3 Beta está instalado en el GAC, siempre ganará, incluso si tiene la versión RC en la carpeta bin de la aplicación.

+0

Thnx marcind. En realidad, ya había copiado la versión rc al servidor. Por lo tanto, imprimí el registro en el archivo global.asax para ver la ubicación de System.Web.Mvc.dll, ¡y descubrí que está en la carpeta GAC_MSIL! Me confirmó el equipo de soporte técnico de la compañía de mangueras que mvc3 no está en su GAC, pero parece que es la versión beta. –

+0

@marcind, ¿hay alguna forma de forzar a hacer referencia a la versión de RC System.Web.Mvc.dll en el directorio/bin en lugar de la versión beta dll en GAC? ¿Puede funcionar 'bindingRedirect'? –

+1

@tk el GAC siempre ganará en este escenario porque los archivos DLL tienen la misma versión. – Eilon

Cuestiones relacionadas