Pregunta

Quiero tener una aplicación de consola que usaría para representar el resultado en un archivo.

Pseudocódigo:

ComponentBaseController controller = new ComponentBaseController();
SaveToFile("output.html", controller.Result);

No estoy usando código real aquí ya que he probado diferentes enfoques, pero nada me acerca.

Lo más cercano que conseguí usando Consejo # 25 de Stephen Walther , es esto:

ComponentBaseController controller = new ComponentBaseController();

RouteData routeData = new RouteData();
routeData.Values.Add("controller", "ComponentBase");

var fakeContext = new FakeControllerContext(controller, routeData);

var result = controller.Details("klasta7") as PartialViewResult;
result.ExecuteResult(fakeContext);
Console.Write(fakeContext.HttpContext.Response.ToString());

Esto arroja una excepción System.InvalidOperationException de que no se pudo encontrar la vista parcial. Intenté diferentes ubicaciones para la carpeta Vistas, pero no tuvimos suerte.

¿Alguna idea? Gracias!

¿Fue útil?

Solución

No soy alguien que intente recomendar algo más que lo que me pides hacer, pero estoy de acuerdo con Wyatt, el objetivo parece un poco difícil, y en el mejor de los casos creará un olor a código. Si simplemente necesita guardar la salida renderizada en un archivo, creo que sería más fácil tener un servicio de aplicación que se llame cuando necesite guardar, probablemente desde el controlador. En ese caso, tendría acceso a un HttpContext actual, rutas, etc.

Si es una aplicación completamente diferente (la aplicación de consola existe por sí sola), ¿qué pasa con la configuración de un servicio desde dentro de la aplicación web que tiene un método que la aplicación de consola podría llamar para recuperar la salida renderizada?

Otros consejos

Va ??a ser complicado obtener material para renderizar sin alojar la aplicación en algo ya que no hay HttpContext, etc.

Ahora, usar WebRequest para tomar páginas de una versión en ejecución de la aplicación y descargarlas en el disco es un poco más factible.

Finalmente, esto suena un poco FUBAR. ¿Cuál es el objetivo de esta operación?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top