К моменту запроса вопроса мы решили пойти с MVC 5 и Owin, в настоящее время вы можете легко перейти с MVC 6 (ASP.NET 5 aka vNext).
Кода для консольного приложения размещаемого в Owin довольно прямо вперед, как вы могли бы увидеть во многих учебных пособиях:
private static void Main()
{
try
{
string baseAddress = ConfigurationManager.AppSettings["ApiBaseAddress"];
Log.Info("Listening on " + baseAddress);
// Starts OWIN host
using (WebApp.Start<Startup>(url: baseAddress))
{
Console.ReadLine();
}
Log.Info("Host is being closed.");
}
catch (Exception exception)
{
Log.WriteLine(LogLevel.Fatal, "Error running service: " + exception.ToString());
throw;
}
}
Где Startup
класс для Owin конфигурации средних вещевой. Кроме того, вы обычно принимаете это как службу Windows.
Я также могу совместно использовать реализацию контроллера, которая может использоваться для обслуживания шаблонов. Он ожидает данные JSON в теле POST с свойством TemplateEncoded
в корневом каталоге объекта JSON, который содержит строку с кодировкой base64 из tempalte бритвы. Этот шаблон бритвы затем выводится из других значений, которые предоставляются в запросе JSON. Для рендеринга шаблона бритвы используется RazorEngine.
[HttpPost]
public async Task<IHttpActionResult> Post()
{
dynamic model = null;
string request = string.Empty;
try
{
request = await Request.Content.ReadAsStringAsync();
model = JsonConvert.DeserializeObject<ExpandoObject>(request);
model.Template = RequestHelper.FromBase64(model.TemplateEncoded);
// here you could do some validation, if required.
var razorResult = Razor.Parse(model.Template, model);
var result = HttpUtility.HtmlDecode(razorResult);
return Ok(result);
}
catch (Exception ex)
{
Log.Error(request, model == null ? "ERROR: template was not converted from base64 encoded string." : model.Template, ex);
return InternalServerError(ex);
}
}
FYI in asp.net 5 (vNext) в web scaffolding мы используем бритву в качестве шаблона lang. См. Комментарий Я только что разместил http://stackoverflow.com/questions/27013442/vnext-console-app-that-uses-razor-views-without-hosting#comment42680793_27013442 и вот код https://github.com/aspnet /Scaffolding/blob/dev/src/Microsoft.Framework.CodeGeneration/Program.cs –