2014-04-21 7 views
13

Mono 및 XSP4를 사용하여 Linux 상자에서 MVC5 웹 사이트를 시작하려고합니다. 그러나 오류가있는 렌더링을 시도 할 때보기없이 작동합니다.모노 MVC5 -보기가 작동하지 않습니다.

여기가 내 테스트 코드입니다. 나는 아무것도 변경하지 않았 음을 주목하십시오. 이것은 기본적으로 EF 나 다른 라이브러리가없는 빈 사이트입니다. 그냥 베어 본 MVC5 + 면도기.

public ActionResult Index() 
{ 
    // return Content("'sall good"); // works 
    return View(); 
} 

System.InvalidOperationException

는 면도기 호스트 공장을 유형 찾을 수 없습니다 : System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, 버전 = 5.0.0.0을, 중립 문화 = PublicKeyToken = 31BF3856AD364E35

설명 : HTTP 500. 오류 처리 요청.

상세 정보 : 웹 예외가 아닙니다. 예외 출처 (응용 프로그램 또는 개체의 이름) : System.Web.WebPages.Razor.

스택 트레이스

at System.Web.WebPages.Razor.WebRazorHostFactory.CreateFactory (System.String typeName) [0x00000] in <filename unknown>:0 

at System.Collections.Concurrent.ConcurrentDictionary`2+<GetOrAdd>c__AnonStorey3[System.String,System.Func`1[System.Web.WebPages.Razor.WebRazorHostFactory]].<>m__0() [0x00000] in <filename unknown>:0 

at (wrapper delegate-invoke) System.Func`1<System.Collections.Generic.KeyValuePair`2<string, System.Func`1<System.Web.WebPages.Razor.WebRazorHostFactory>>>:invoke_TResult__this__() 

... 

나는 버전 = 5.0.0.0 4.0.0.0 및 3.0.0.0 등을 변경하려 시도했지만 아무것도 작동하지 않습니다. 나는 여전히 4.0.0.0 정도의 오류가 발생한다.

희망이 있습니까?

+0

시도해 보셨습니까? sudo apt-get install asp.net-examples –

+0

@DavidCrowell 아니요, AFAIK 그들은 3 세 이상이므로 무의미합니다. MVC2의 작동 방식을 보여줍니다. 공식 사이트가 뒤처지고 있기 때문에 나는 git에서 모노를 얻고 소스에서 컴파일한다. 그리고 aptitude 저장소의 mono도 매우 오래된 버전입니다. – sed

+0

log4net을 설정 했습니까?TypeFactory (WebRazorHost에서 참조)는 log4net을 사용합니다. –

답변

20

폴더 안에있는 Web.config에 문제가 있습니다. system.web.webPages.razorhost 매개 변수는 MVC 버전과 정확하게 일치해야합니다.

예를 들어 MVC 5.2.2.0 인 경우 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />처럼 보입니다.

-1

Stan이 말한 것과 같습니다. System.Web.MVC의 버전을 확인하고 프로젝트의 참조 폴더에서 "마우스 오른쪽 버튼> 속성"을 클릭하십시오. 그런 다음 /views/web.config에서 해당 행을 업데이트하십시오.

0

이 작품은 저에게 유용합니다. 내 MVC 버전에 따라 5.2.3.0으로 Mvc 버전의 Views 폴더에서 Web.config를 변경했습니다. 예 : <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

내 버전을 5.2.0.0에서 5.2.3.0으로 변경했습니다.

2

프로젝트의 MVC 버전이 MvcWebRazorHostFactory 버전과 일치해야하며, 동일해야합니다. 버전을 5.2.3.0 (Views/Web.config 파일)로 변경해야했습니다. 당신은 당신의 프로젝트에 사용하는 MVC의 버전을 알 수없는 경우

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0 

, 다음 프로젝트로 이동 -> 편집 참조 -> 다음 오른쪽에, "선택된 참조"에서 System.Web.Mvc 곳으로 아래로 스크롤 어떤 버전을 사용하고 있는지 확인해야합니다. 이것이 내가 Xamarin Studio Community에서 발견 한 방법입니다.