c# - framework - Respuesta en blanco de Nancy Self Host con vista de Razor
nancy github (3)
Descubrí una parte de mi problema, el ensamblaje de la maquinilla de afeitar no estaba cargado en mi dominio de aplicación cuando creé mi NancyHost. NancyHost tiene TinyIoc escanea y crea una lista de todas las clases en todos los ensamblajes cargados cuando se inicia, y esta lista nunca se borra. Lo arreglé creando un RazorViewEngine para forzar la carga del ensamblaje. El uso de la llamada Registrar () también funciona, pero creo que solo porque obliga a cargar el ensamblaje, creo que Nancy tiene su propio contenedor. Todos estos lugares funcionan, pero aún así no funciona si lo puse en mi NancyModule:
//TinyIoC.TinyIoCContainer.Current.Register<RazorViewEngine>(); // WORKS
//RazorViewEngine rve = new RazorViewEngine(); // WORKS
m_Host = new NancyHost(m_Uri);
//TinyIoC.TinyIoCContainer.Current.Register<RazorViewEngine>(); // WORKS
m_Host.Start();
TinyIoC.TinyIoCContainer.Current.Register<RazorViewEngine>(); // WORKS
Si alguien quiere volver a escribir esta respuesta y buscar una forma más limpia o una mejor solución, aceptaré la respuesta.
Resuelto en Nancy 0.6
Estoy intentando que Nancy, que se aloja por mí misma, devuelva una vista de afeitar y no puedo hacer que funcione. La muestra en el código fuente de Nancy utiliza un proyecto web, pero la página que tienen no dice que sea necesario. He intentado especificar las secciones de configuración pero de nuevo dicen " Este paso es totalmente opcional " (las cursivas son suyas). Rastrear a través de la fuente no parece que la afeitadora sea un motor de visualización válido, pero no veo dónde puedo agregarlo ni en la configuración ni en mi propio NancyModule ... Cualquier ayuda sería apreciada.
Cuando finalmente descubrí que estaban buscando en la carpeta de vistas, parece que el cshtml es una extensión compatible, pero el DefaultViewFactory no lo tiene asociado con un motor de vista, por lo que obtengo un valor nulo:
Mi código:
public Module1()
{
Get["/me"] = parms =>
{
return View["Static.html"]; // WORKS!
};
Get["/you"] = parms =>
{
dynamic model = new ExpandoObject();
//return View["~/Static.cshtml", model];
//return View["/Static.cshtml", model];
return View["Static.cshtml", model]; // blank page, no error or anything
};
}
Static.cshtml es solo una página html que dice "¡Hola mundo!"
Tuve una especie de problema similar con nancy 0.8.0 y Razor. Tuve Nancy, Host.Self y ViewEngine.Razor descargados e instalados, y referenciados.
Aún cuando al compilar el compilador no se pudo encontrar el espacio de nombres de Razor en Nancy.ViewEngines.Razor (aunque el buscador de objetos y el Reflector mostraron que el espacio de nombres y los tipos estaban perfectamente bien), hice todo el vodo de referencia del espacio de nombres normal; Limpie, elimine, agregue, pm unstall, pm instale, mueva manualmente los dlls a la papelera, colóquese el afortunado sombrero de compilación, escupió tres veces sobre mi hombro izquierdo, etc., pero todavía obtuvo el mismo resultado. No hay maquinilla de afeitar cargada en el dominio de aplicación ...
Volví a cargar manualmente el ensamblaje en el dominio de aplicación y uso el activador para crear una instancia del tipo RazorViewEngine para la fábrica de contenedores Tiny.IoC.
El problema real fue que el proyecto de inicio de mi solución estaba dirigido al perfil del cliente .NET Framework 4. Al parecer, el paquete .Net del cliente no puede consumir y ver algunas partes de una DLL compilada para la versión 4 completa.
De todos modos Cambié mi versión a "normal" .NET 4 y todo vuelve a la normalidad. El compilador encuentra los tipos en el espacio de nombres y Tiny.IoC es capaz de conectar todo.
los proyectos de consola, formulario y wpf ubican los archivos de vista en la misma ubicación que el archivo ejecutable. significa que debe copiar sus archivos view.cshtml en la carpeta bin / debug de su proyecto para trabajar en el modo de depuración.
Entonces: marque sus archivos .cshtml como copia a salida