1

AdminAreaRegistration.cs 파일 대신 global.asax 파일에 지역 경로 (즉 Admin이라고 부름)를 등록하는 경우 AdminAreaRegistration.cs 파일을 삭제할 수없는 이유가 있습니까? 누락 된 경우 예외를 throw 할 수있는 일부 단계에서 호출 할 수있는 다른 코드가 프레임 워크에 있습니까?xxxxxxxAreaRegistration.cs를 삭제할 수 있습니까?

의견 요청으로

, 여기에 필립 Haydon에 의해 this excellent post 강조로, Global.asax에

routes.MapRoute(
    "AdminAreaRoute", 
    "Admin/{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new string[] { "Payntbrush.Presentation.Demo.MVC3.Areas.Admin.Controllers" } 
).DataTokens.Add("Area", "Admin"); 

routes.MapRoute(
    "SiteAreaRoute", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new { controller = "/|Home|Account" }, // Constraint's on the URL (second param above) {controller} segment 
    new string[] { "Payntbrush.Presentation.Demo.MVC3.Areas.Site.Controllers" } 
).DataTokens.Add("Area", "Site"); 

키가 DataTokens 컬렉션을 사용에에서 영역을 등록하는 코드입니다. 원하는 수만큼 추가 할 수 있지만 명시 적으로 명명 된 영역 뒤에 루트 사이트 영역을 두어 다른 맵 경로보다 먼저 {controller}/{action}/{id}이 모든 요청을 포착 할 수 없도록해야합니다.

답변

0

이 파일을 삭제했으며 지금까지 아무런 문제가 없었습니다. 나는 어떤 문제가 생길 때까지는 괜찮다고 생각할 것입니다.

0

global.asax에서 지역을 등록하는 데 사용하는 코드를 게시 할 수 있습니까?

내가, 내가 다른 프로젝트의 경우에도 (어딘가에 구현 xxxAreaRegistration.cs 클래스없이 제대로 작업 영역을 얻기 위해 기술적으로 가능하다고 생각하지 않는다 물어 이유.

그것없이하지만 현실에서 일하고처럼 난 당신이 단순히 경로는 하위 디렉토리를 가리키는 .NET을 말하는 것 같아 보일 수 있습니다. 당신이 어떤 점에서 오류가 기대

.

H ave 봐 msdn AreaRegistration Class documentation

ASP.NET MVC 응용 프로그램에서 하나 이상의 영역을 등록하는 방법을 제공합니다.

그것이 유일한 방법이라고 말하는 것은 아니지만, 나는 그럴 수도 있다고 생각합니다.

+0

위 코드를 달성하기 위해 위 코드를 추가했습니다. 이것은 잘 작동하지만, 내가 알아 내려고하는 것은 MVC 3 프레임 워크 내에 xxxAreaRegistration 클래스를 호출 할 수있는 다른 코드가 있는지 여부이다. 삭제하면 null 예외가 발생합니다. – Chris

+0

Chris, 여기서 문제는 경로를 등록하지 않고 해당 영역에 액세스하려고하면 오류가 발생한다는 것입니다. 따라서 등록한 한 해당 영역에 액세스 할 때 오류가 발생하지 않아야합니다. 이것은 닷넷이 arearegistration 또는 등록 된 경로를 필요로하거나 찾을 유일한 시간입니다. – shenku

+0

지금은 확인할 수 없지만 지역에서 AreaRegistration 파일을 삭제하고 Global.asax의 "AdminAreaRoute"경로에 의존하여 요청이 올바르게 라우팅 된 후 90 %입니다. 다음 번 기회를 두 번 확인해 보겠습니다. – Chris