2014-10-28 2 views
1

JavaScript 코드에 대해 Jasmine 테스트를 실행하는 UnitTest 컨트롤러가 포함 된 .NET MVC 프로젝트가 있습니다. 그러나 사이트를 게시 할 때 사용할 수 있기를 원하지 않습니다.게시 할 때 컨트롤러가 어떻게 제외되어야합니까?

나는이 작업을 수행하는 몇 가지 방법에 대해 생각하고 있지만, 무엇이 최선인지 확실하지 않습니다.

  • 이 사실 나는이에 대한 컴파일러 지시어를 사용하는 것입니다 가능한 경로

의 컬렉션에서 컨트롤러를 제거하려면에 대한 액세스를 금지하기 위해 도입 될 예정 사용 권한 부여 특성 (#IF DEBUG) 쉽게 물건을 분리 유지. 솔직히 컨트롤러를 제거하는 것이 더 나은 선택이 될 것이라고 생각하지만, 어디로 갈지는 잘 모르겠습니다. Global.cs 파일 일 가능성이 있습니까?

나는 어떤 제안이라도 고맙게 생각합니다. 컨트롤러에 대한 액세스를 금지하는 것이 최선의 해결책이라면, 그것은 괜찮습니다. 그리고 제가 스스로 쉽게 구현할 수있는 것입니다. 나는 단지 더 좋은 방법이 있어야한다고 생각합니다.

답변

2

당신은 조건부로 경로를 무시할 수 :

#if !DEBUG 
routes.IgnoreRoute("UnitTest/{*pathInfo}") 
#endif 

을이 당신이 제안 조건 컨트롤러 자체를 제거하는 것보다 훨씬 다양한 아니지만.

+0

우수! 그게 바로 제가 찾던 것입니다. 감사! – krillgar

+0

나 한테 정말 좋은 +1! – mybirthname

0

게시 할 때 Web Deploy를 사용하는 경우 게시 할 때 어셈블리에 이미 있기 때문에이 단계에서이 작업을 수행하는 것이 어려울 것이라고 생각합니다.

하지만 명시한대로 런타임에 확인하고 싶다면. 한 가지 방법은 프로덕션 환경에서 컨트롤러에 대한 액세스를 거부하는 것입니다. web.config 변환을 사용하거나 authorize 특성으로 컨트롤러를 꾸밀 수 있습니다. 또는 라우팅을 어떻게 든 수정하십시오.

하지만 프로젝트 파일을 약간 수정할 수 있습니다. 당신은 include/exclude files depending on conditions 일 수 있습니다. 프로젝트 파일에서 컨트롤러 클래스와 일치하는 <Compile /> 요소에 Condition=" '$(Configuration)' == 'Debug' "을 추가하기 만하면됩니다. 그런 다음 프로젝트가 출시 될 때 컨트롤러가 제외되어야합니다. 유일한 잡았다, 그것은 숨겨진 구성입니다. 컨트롤러가 프로젝트에서 삭제되어 다시 읽혀지면 다른 사람이 해당 조건을 다시 적용해야한다는 것을 기억해야합니다. 그렇지 않으면 게시가 중단됩니다.

관련 문제