2013-08-02 2 views
6

자체 호스팅 서비스에서 Razor Viewpages를 성공적으로 구현했습니다. 페이지가 3.9.56으로 업데이트 될 때까지 완벽하게 렌더링됩니다. 뷰는 Windows Forms 클라이언트와 함께 서비스에서 json 응답을 소비하는 Windows Forms 응용 프로그램에서 테스트되었습니다. 이것은 아직 완벽하게 작동하지만, 지금은 면도기보기를 테스트 할 때 한 페이지를 요청할 때 다음과 같은 예외가 점점 계속 : ERROR: Error occured while Processing Request: [HttpCompileException] c:\Users\Cornel\AppData\Local\Temp\2msjdedu.0.cs(24): error CS0246: The type or namespace name 'ViewPage' could not be found (are you missing a using directive or an assembly reference?), Exception: c:\Users\Cornel\AppData\Local\Temp\2msjdedu.0.cs(24): error CS0246: The type or namespace name 'ViewPage' could not be found (are you missing a using directive or an assembly reference?)ServiceStack 면도기 뷰 컴파일되지 않음

내가 서비스와 면도기 뷰 및 페이지를 호스팅 할 수있는 작은 콘솔 응용 프로그램을 구축 올바르게 렌더링합니다. 두 프로젝트 모두 테스트 프레임 워크에서 Windows Forms 어셈블리 참조를 제외하고 동일한 참조를가집니다. 두 프로젝트 모두 별도의 어셈블리에서 동일한 관리 클래스의 AppHost를 시작하고 모든 뷰가 게시되었습니다.

구성 파일의 유일한 차이점은 Windows Forms 테스트 프레임 워크의 <userSettings> 섹션입니다.

[편집]

내가 @inherits ViewPage 예상대로 ServiceStack.Razor.ViewPage의 모든 작품 @inherits로 변경

+0

일부 코드를 제공해 주실 수 있습니까? 도움이되지 않는 경우에도 귀하의 설명. 오류 메시지가있는 코드가 반드시 도움이 될 것입니다. – kunjee

+0

오류 메시지가 있습니다. 불행하게도 공유 할 수없는 코드입니다. 시도해보고 ServiceStack을 사용하여 샘플을 빌드합니다.이 코드는 문제가되는 즉시 문제를 닮았습니다. – cornelha

+0

샘플 코드가 반드시 도움이 될 것입니다. 오류 메시지에 의해서만 문제를 해결하는 것이 불가능합니다. – kunjee

답변

6

이 문제는 나를 미치게되었다. 난 그냥 해결책을 발견 :

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="ServiceStack.Razor.ViewPage"> 
     <namespaces> 
     <add namespace="System.Linq" /> 
     <add namespace="ServiceStack.Html" /> 
     <add namespace="ServiceStack.Razor" /> 
     <add namespace="ServiceStack.Text" /> 
     <add namespace="ServiceStack.OrmLite" /> 
     <add namespace="MyApp" /> 
     <add namespace="MyApp.Services" /> 
    </namespaces> 
    </pages> 
</system.web.webPages.razor> 

다음은 모든 면도기 템플릿에 대한 기본 네임 스페이스 수입 같습니다 ServiceStack.Razor 응용 프로그램의 app.config이 같은 섹션이 포함되어 있습니다. 이 문제는 응용 프로그램이 별도의 DLL에있을 때 발생합니다. 예를 들어 예제에서도 마찬가지입니다. MyApp을 참조하는 MyApp.Host이라는 콘솔 응용 프로그램 프로젝트가 있다고 가정 해 보겠습니다. MyApp.Host.exe.config의 기본 가져 오기를 찾는 대신 ServiceStack은 AppHost가 들어있는 DLL의 구성 파일 (이 경우 MyApp.dll.config)에서 해당 가져 오기를 찾습니다. 문제는이 구성 파일이 빌드시 MyApp.Host의 bin 폴더에 자동으로 복사되지 않는다는 것입니다.

해결책은 비교적 간단하다 : (Getting a HttpCompileException in ServiceStack Razor view (Self hosted) 참조) 또한 프로그래밍 수입을 추가 할 수 있습니다 :

copy /y $(SolutionDir)MyApp\app.config $(TargetDir)MyApp.dll.config 

편집 : MyApp.Host의 포스트 빌드 이벤트에 다음과 유사한 추가

EndpointHostConfig.RazorNamespaces.Add("ServiceStack.Razor"); 
EndpointHostConfig.RazorNamespaces.Add("MyApp"); 
EndpointHostConfig.RazorNamespaces.Add("MyApp.Services"); 
SetConfig(new EndpointHostConfig 
{ 
    DefaultRedirectPath = "/Home", 
}); 
+0

그래, 그게 내 상황이야. My Views 및 AppHostHttpListenerBase는 다른 어셈블리에 있습니다. Windows Forms 응용 프로그램, 서비스 및 콘솔 응용 프로그램에서 어셈블리를 사용합니다. 이게 내 모든 문제를 해결했습니다. 고마워요. – cornelha