ASP.NET MVC — метод действия контроллера из консольного приложения

StackOverflow https://stackoverflow.com/questions/1631623

  •  06-07-2019
  •  | 
  •  

Вопрос

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

Псевдокод:

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, указывающее на то, что частичное представление не найдено.Пробовал разные места для папки «Просмотры», но безуспешно.

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top