2012-05-16 2 views
0

SimpleMvcCaptcha를 사용하고 있습니다. 내 환경에는 다른 영역이 있습니다. 나는이 보안 문자를 다른 형태로 다른 영역에서 사용하고 싶다.MVC의 경로에서 지역 이름 제거

이 모듈에는 Captcha라는 이름과 그 안에 하나의 메소드가있는 컨트롤러가 필요합니다. 내가 그것을 사용하고, 같은 지역에있는이 컨트롤러를 만드는 경우 후 문제가없는,하지만 난 다른 지역에서 사용하는 경우,이 오류가 무엇입니까 :이 문제를 해결할 수있는 방법

The controller for path '/AreaName/Captcha/GetImage/15fe4de1-fd46-4f2f-a0d1-74c397bd8365' could not be found. 

을 ? 이 문제를 해결할 수있는 방법 중 하나는

routes.MapRoute(
      "Default_Captcha", 
      "AreaName/Captcha/{action}/{id}", 
      new { area = string.Empty, controller = "Captcha", action = "GetImage", id = UrlParameter.Optional }); 

와 같은 영역을 제거하는 것입니다.하지만 여전히 동일한 오류가 발생합니다.

링크에서 지역 이름을 삭제할 수있는 방법이 있습니까?

--- 보안 문자는 작업 (보안 문자 이미지를 얻기위한 하나의 방법으로 컨트롤러)에 대한 컨트롤러를 필요로

업데이트.

MyArea에 구현 된 양식으로 사용하고 싶습니다. 이 폼은 MyController라는 컨트롤러와 관련이 있습니다.

필요한 코드가 들어있는이 영역에 CaptchaController를 만드는 경우 captcha가 잘 작동합니다 (Captcha 이미지가 표시됨).

이제 다른 영역 (MyArea2)이 있다고 가정하고이 영역에 MyController2라는 컨트롤러가있는 경우이 영역에 새 Captcha 컨트롤러가 필요합니다. 그렇지 않으면 이미지가 표시되지 않습니다.

이미지가 표시되지 않으므로 CaptchaController를 비 지역 코드 섹션으로 이동할 수 없습니다.

보안 문자 이미지의 URL이다 (MyController에 관련된 도면에 사용 된 보안 문자의 경우) :

http://mySite/MyArea/Captcha/GetImage/xxxxxxxxxxxx 

보안 문자 이미지의 URL은 (MyController2 관련도에 사용되는 보안 문자의 경우)이다

http://mySite/MyArea2/Captcha/GetImage/xxxxxxxxxxxx 

captcha 컨트롤러를 비 영역 섹션으로 이동하면 위 URL 중 아무 것도 작동하지 않고 이미지가 표시되지 않습니다.

나는 다음과 같은 URL에 경로를 해당 URL을 다시 할 수 있다면, 그들은 작동합니다 (I 이외의 지역 섹션에서 하나의 보안 문자 컨트롤러를 가질 수 있습니다) :

http://mySite/Captcha/getImage/xxxxxxxxxxxxxxxxxxx 

내가 어떻게 할 수 있습니까?

답변

0

CaptchaController가 특정 지역에만 국한된 것이 아니라면 해당 지역에 있어서는 안됩니다. 기본 Controllers 디렉토리로 옮겨 놓고 이름을 변경하면 전역 적으로 액세스 할 수 있어야합니다.

어떤 이유에서든 그렇게하고 싶지 않으면 전역 위치에서 직접 작업에 매핑되는 더 높은 우선 순위의 경로를 등록 할 수 있습니다. 정의한 라우트의 문제점은 매개 변수로 컨트롤러의 영역을 지정하지 않고 URL 자체에서만 그렇게하는 것입니다.(1) 샘플 경로를 추가하거나 제거하는지 여부가 명확하지 않기 때문에 (2) 샘플 경로 전후에 어떤 경로가 등록되어 있는지 확인할 수 없기 때문에 라우팅을 디버깅하기가 다소 어렵습니다. (3) 매핑이 작동하거나 작동하지 않는 영역인지 알 수 없기 때문에 AreaName의 모호함이 혼동 스럽습니다.

+0

감사합니다. 내 업데이트를 참조하십시오. – mans

관련 문제