1

내가 내 MVC 프로젝트 내에서 다음 컨트롤러 한 다음 내가 사이트를로드 할 때 내 URL이URL에 작업 이름을 지정하지 않고 라우트를 작동시킵니다. - MVC

public class PressController : Controller 
    { 
     // GET: Press 
     public ActionResult Index() 
     { 
      return File("../press/FFF_PRESS.zip", ".zip"); 
     } 
    } 

내 경로

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

대로 :

www.example.com 

을 표시하는 다음을 클릭하면 홈 페이지가 올바르게 표시됩니다. Action<li class="footer__navEl"><a href='@Url.Action("Index", "Press")'>PRESS</a></li>

나는 URL이

www.example.com/press 

을하고 zip 파일을 반환하고 싶습니다. 금지 웹 서버는이 디렉토리의 내용을 나열되지 않음으로 구성 -

HTTP 오류 403.14이 :

그러나 나는이 Action를 클릭 할 때 나는 다음과 같은 얻을.

그러나 나는 .zip 파일이 제대로 반환

www.example.com/press/index 

을 지정할 때.

은 지금은 내 routes.config에 다음과 같은 추가 :

routes.MapRoute("Press", "Press", new { controller = "Press", action = "Index" }); 

난 여전히 위에서 언급 한 동일한 오류, 누군가가 내가이 올바르게 수행하기 위해 얻을 누락 될 수 있습니다 무엇에 도움이 되거 수를 얻을?

+0

'MapRoute'을 올바른 순서로 설정 했습니까? '[domain]/Press'는 IIS에서 기본적으로 비활성화되어있는'Press' 디렉토리 내용을 표시하도록 요청합니다. 경로 명령이나 형식은 'Press'컨트롤러가 기본값보다 먼저 평가되도록 조정해야합니다. –

답변

3

HTTP 오류 403.14 - 금지됨 웹 서버가이 디렉터리의 내용을 나열하지 않도록 구성되었습니다.

오류는 press라는 이름의 웹 서버에 물리적 디렉토리를 나타냅니다. 웹 서버가 MVC에 요청을 전달하는 대신 디렉토리를 반환하고 있다는 것입니다. IIS의 기본 설정은 디렉터리의 내용을 나열하지 않으므로 오류입니다.

press 디렉터리를 삭제하거나 (권장) runAllManagedModulesForAllRequestshas some caveats을 사용하여 디렉터리 대신 MVC 모듈을 실행하도록 IIS를 다시 구성해야합니다.

이것은 라우팅 문제가 아닙니다. 이것은 웹 서버 구성 문제입니다.