tipo seguridad que personalizar parte net mvc modelo implementar framework forma entidad contexto asp applicationuser actual asp.net-mvc-3 razor embedded-resource plugin-architecture

asp.net-mvc-3 - seguridad - personalizar asp.net identity



La vista debe derivarse de WebViewPage o WebViewPage<TModel> (7)

Estoy siguiendo el tutorial de arquitectura de complementos de Justin Slattery e intento adaptarlo para Razor, en lugar de las vistas de WebForm.

Todo lo demás (controladores, carga de ensamblaje de complementos, etc.) parece estar bien. Sin embargo, no puedo incorporar vistas de Razor para que funcionen correctamente. Cuando trato de buscar el "HelloWorld / Index", aparece el siguiente error:

The view at ''~/Plugins/MyProjectPlugin.dll/MyProjectPlugin.Views.HelloWorld.Index.cshtml'' must derive from WebViewPage or WebViewPage<TModel>.

La excepción es lanzada por System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262

Puedo incluir el seguimiento completo de la pila, si es necesario.

¿Alguien puede aconsejarme sobre lo que podría estar haciendo mal?


Acabo de recibir este error hoy al actualizar un viejo proyecto MVC3 a la versión 4 y, para mí, la solución fue eliminar el atributo appliesTo="v2.0.50727" en el <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> sección.


Instale el paquete: Install-Package Microsoft.AspNet.WebPages


Nota: tuve un problema muy similar y tuve que buscar finalmente que era el único desarrollador con MVC 4.0.0.0 vinculado en su solución.

Todos los demás tenían 3.0.0.0 referenciado correctamente y se estaba construyendo / ejecutándose sin errores.

TL; DR Asegúrese de que sus referencias sean las mismas que las del resto de su grupo de desarrollo.


Obtuve este error cuando intenté agregar el andamiaje MVC (específicamente la carpeta Views ) a un proyecto de API web. La respuesta de Darin Dimitrov dice:

ya no existe el archivo ~/Views/web.config que se aplica y le permite especificar el tipo de base para sus vistas de afeitar

Y en los comentarios sobre esa respuesta, joelnet dijo :

Pude copiar el archivo web.config de ~ / Views en mi ubicación alternativa para resolver mi problema con esto.

y Paul d''Aoust dijo :

Si tiene problemas para que funcione la solución del comentario de @ joelnet, intente limpiar y reconstruir el proyecto.

Estas pistas me ayudaron a encontrar la solución.

Primero copié el Web.config de la carpeta Views de otro proyecto en la misma solución a mi nueva carpeta de Views . Cambié el namespace etiqueta principal del namespace para que coincidiera con el nuevo proyecto y, después de obtener un error, eliminé otro <add namespace="..." /> que no necesitaba. Luego activé una compilación (solo una compilación normal, no necesité limpiar y reconstruir), y pude cargar mi nueva vista sin errores.


Puede consultar la siguiente publicación de blog, que está más adaptada a Razor.

Pero para responder a su pregunta, dado que ahora está publicando sus vistas desde una ubicación no estándar, ya no existe el archivo ~/Views/web.config que se aplica y le permite especificar el tipo de base para sus vistas de afeitar. Por lo tanto, es posible que deba agregar lo siguiente en la parte superior de cada vista de la máquina de afeitar:

@inherits System.Web.Mvc.WebViewPage @model ...


Quiero compartir mi dolor ... el sitio funcionaba bien localmente, sin embargo, cuando publiqué en el IIS del cliente, estaba arrojando este error. Todos los archivos web.config (root y / Views) coincidían perfectamente con una copia de trabajo del sitio.

Una de las vistas (logon.cshtml) tenía terminaciones de línea inconsistentes y no hice clic en sí para solucionarlo en mi máquina con Windows.

Al hacer clic en Sí en el cuadro de diálogo inconsistentes de finalización de línea y al publicar la vista logon.cshtml lo solucioné por mí.


Tuve el mismo problema porque no comprometí la carpeta de paquetes que contiene las bibliotecas de afeitar. Luego agregué el paquete, funcionó pero al reconstruirse se rompió. Luego apagué Nuget automática ejecutar en compilación y ahora está funcionando bien. En mi caso, nuget estaba estropeando las cosas.