2012-07-24 2 views
3

매우 이상한 작업이지만 요구 사항을 변경할 수는 없습니다. WCF 서비스 (SOAP가 아닌 REST)를 작성하고 HTML을 응답 객체의 속성으로 반환해야합니다.Razor 렌더링 WCF 서비스 내부보기

내가 사용하지 않으 :

  • 하드 코딩 된 문자열을 어떤 값을 입력 할 수 및 String.format()를 사용;
  • t4 템플릿이 없으므로 앞으로는이 방법을 지원할 수있는 사람이 많지 않습니다.
  • 대부분의 개발자가 WebForm 컨트롤을 사용하여 MVC 프로젝트를 작업합니다.

일부 ActionResult를 문자열로 렌더링하는 방법을 이미 알고 있습니다. 그래서 이상적으로 컨트롤러를 만들고 액션을 호출하고 ActionResult를 얻을 수 있기를 원합니다.

MVC 응용 프로그램을 만들고 service.svc 파일을 추가했습니다. 서비스는 잘 작동합니다 - 메소드를 호출하고 결과를받을 수 있습니다. 그러나 내 문제는 Razor View를 렌더링하려고 할 때 시작됩니다. 단순히 컨트롤러의 인스턴스를 만든 다음 액션을 호출하면 컨트롤러의 ControllerContext 속성이 null이므로 View를 렌더링 할 수 없습니다. 나는 즉시 ControllerContext를 만들려고했지만, 뭔가 빠져있는 것처럼 보입니다.

매우 비슷한 질문이 here인데 거기에 제공된 솔루션은 HttpContext.Current가 null 인 wcf 메서드 때문에 거기에서 제공되는 솔루션이 작동하지 않았습니다.

신체가 그것을 달성하는 방법을 알고 있습니까? 아니면 누군가가 WCF 메서드 내부에서 HTML을 렌더링하는 다른 간단하고 유연한 방법을 sugggest 할 수 있습니까?

답변

1

응용 프로그램에 Razor Engine을 호스팅해야합니다. 또한

"는 ControllerContext없이 렌더링"이 문서 Rendering ASP.NET MVC Views to String, 특히 섹션 봐, 더 많은 정보는이 답변 Render a view as a string에서 찾을 수 있습니다. (서로 다른 컨텍스트를 사용하는 몇 가지 "올바른"대답입니다)

2

RazorEngine의 구현이 더욱 가볍기 때문에 Nancy 프레임 워크 (http://nancyfx.org)도 살펴 봐야합니다.

Nancy를 사용하여 주문형 HTML을 생성하는 데 상당한 성공을 거두었습니다. 본질적으로 테스트 할 수 있도록 설계 되었기 때문에 템플릿 프레임 워크로서 자신의 목적에 맞게 쉽게 남용 할 수 있습니다.

관련 문제