我想要一个控制台应用程序,我将用它来将输出呈现给文件。

伪代码:

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

我没有使用真正的代码,因为我尝试了不同的方法,但没有什么能让我接近。

我最接近使用 Stephen Walther提示#25 ,是这样的:

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());

这会抛出System.InvalidOperationException,导致无法找到局部视图。尝试了Views文件夹的不同位置,但没有运气。

有什么想法吗?谢谢!

有帮助吗?

解决方案

我不是一个尝试推荐除你要求之外的东西的人,但我同意Wyatt的说法,目标看起来有点粘性,最多会产生一些代码味道。如果您只需要将渲染的输出保存到文件中,我认为当您需要进行保存时,可能会更容易从控制器获取调用的应用程序服务。在那种情况下,您可以访问当前的HttpContext,Routes等。

如果它是一个单独的应用程序(控制台应用程序本身就存在),那么如何在Web应用程序中设置一个服务,该应用程序具有控制台应用程序可以调用以检索呈现的输出的方法?

其他提示

在没有托管应用程序的情况下渲染内容会很棘手,因为没有HttpContext等。

现在,使用WebRequest从应用程序的运行版本中抓取页面并将它们转储到磁盘上更加可行。

最后,这听起来有点FUBAR。这项行动的目标是什么?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top