ASP.NET MVC - метод действия контроллера из консольного приложения - PullRequest
1 голос
/ 27 октября 2009

Я хочу иметь консольное приложение, которое я использовал бы для рендеринга вывода в файл.

псевдокод:

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

Я не использую настоящий код здесь, так как я пробовал разные подходы, но ничто не приближает меня.

Самое близкое, что я получил, используя Совет № 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, но не повезло.

Есть идеи? Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 октября 2009

Я не из тех, кто пытается рекомендовать что-то другое, кроме того, что вы просите, но я согласен с Уайеттом: цель кажется немного липкой, и в лучшем случае она создаст некоторый запах кода. Если вам просто нужно сохранить визуализированный вывод в файл, я думаю, что было бы проще иметь сервис приложений, который вызывается, когда вам нужно выполнить сохранение, скорее всего, из контроллера. В этом случае у вас будет доступ к текущему HttpContext, Routes и т. Д.

Если это отдельное приложение (консольное приложение существует само по себе), как насчет настройки службы из веб-приложения, у которого есть метод, который консольное приложение может вызывать для получения обработанного вывода?

0 голосов
/ 27 октября 2009

Будет сложно получить данные для рендеринга без размещения приложения в чем-либо, поскольку нет HttpContext и т. Д.

Теперь использовать WebRequest для захвата страниц из работающей версии приложения и выгрузки их на диск стало немного более выполнимо.

Наконец, это звучит немного FUBAR. Какова цель этой операции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...