우리가 MVC 5와 Owin으로 가기로 결정한 질문을 할 때 요즘에는 MVC 6 (ASP.NET 5 aka vNext)을 쉽게 사용할 수 있습니다. OWIN으로 호스팅되는 콘솔 응용 프로그램에 대한
코드는 당신이 많은 자습서에서 보는 것처럼, 꽤 정직 : Startup
이 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;
}
}
. 또한 일반적으로 이것을 Windows 서비스로 대신 호스트합니다.
템플릿 서비스에 사용할 수있는 컨트롤러 구현을 공유 할 수도 있습니다. JSON 객체의 루트에 TemplateEncoded
속성이있는 POST 본문의 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 asp.net 5 (vNext) 웹 스 캐 폴딩에서 우리는 템플릿 랭으로 면도기를 사용하고 있습니다. 방금 게시 한 댓글보기 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 –