문제

IIS 5(6 또는 7)에서 작동하도록 ASP.NET MVC 응용 프로그램을 호스팅하는 가장 좋은 방법은 무엇입니까?ASP.NET MVC 응용 프로그램을 게시하려고 하면 404 오류만 나타나는 것 같습니다.나는 약간의 구글링을 했고 몇 가지 해결책을 찾았지만 둘 다 매우 우아해 보이지 않으며, 일단 응용 프로그램에 공유 호스팅 환경을 사용하게 되면 그것들을 사용할 수 없을까 걱정됩니다.

솔루션 1

  1. inetmgr.exe에서 응용 프로그램 가상 디렉터리를 마우스 오른쪽 단추로 클릭합니다.
  2. 속성->가상 디렉터리 탭-> 구성.
  3. 새 매핑 확장을 추가합니다.확장자는.*, 이는 실행 파일 C : Windows microsoft.net framework v2.0.50727 aspnet_isapi.dll에 매핑되거나 컴퓨터의 적절한 위치 (매핑에서 간단히 복사 할 수 있습니다. .aspx 파일).매핑에서 "파일이 존재하는 것을 확인하십시오"를 선택 해제하십시오.
  4. 3 X OK, 이제 가셔도 됩니다.
  5. 원하는 경우 이 설정을 모든 웹 사이트에 적용할 수 있습니다.1 단계에서는 자신의 가상 디렉토리 대신 "기본 웹 사이트"노드를 클릭하고 2 단계에서 "홈 디렉토리"탭으로 이동하십시오.나머지는 동일합니다.

ASP.NET을 통해 모든 것을 라우팅하는 것은 다소 해키적인 것 같습니다.

솔루션 2

URL에 .mvc를 포함하도록 MVC 라우팅을 편집한 다음 이 확장명을 기반으로 솔루션 1의 단계를 따르세요. 편집하다:원본 이미지 링크가 손실되었지만 다음은 Google 캐시에서 가져온 것입니다.

alt text

도움이 되었습니까?

해결책

대답은 여기

*.MVC 확장자가 호스팅에 등록되지 않으면 404 예외가 제공됩니다.이 경우 MVC 앱을 호스팅하는 작업 방식은 다음과 같은 방식으로 Global.asax 라우팅 캘러스를 수정하는 것입니다.

lours.add (새 경로 ( "{컨트롤러} .mvc.aspx/{action}", new mvcrouteHandler ()) {defaults = new lourteValuedictionary (new {컨트롤러 = "YourController"})});

이러한 방식으로 모든 컨트롤러 요청은 호스팅에서 인식하는 *.mvc.aspx로 끝납니다.그리고 MVC DLL이 현지 빈으로 복사되면 특별한 정착을 할 필요가 없습니다.

다른 팁

제 생각에는 어느 쪽이든 해결 방법 1을 수행해야 합니다..

HTTP 요청 파이프라인을 고려해보세요.

  1. IIS에 요청이 들어옵니다.
  2. IIS는 포트/호스트 헤더를 검사하여 해당 호스트 헤더/포트에 대한 요청을 캡처하도록 설정된 웹 사이트가 있는지 확인합니다.
  3. IIS는 요청의 파일 확장자(.php, .asp, .aspx)를 조사하고 해당 유형의 요청을 처리할 수 있는 ISAPI에 이를 전달합니다.

이 시점에서만 ASP.NET(또는 PHP 런타임)이 시작됩니다. IIS에 해당 매핑이 없으면 요청을 ASP.NET 런타임으로 전달하지 않으며 요청이 코드에 도달하지 않습니다.그렇기 때문에 ASP.NET ISAPI에 대한 glob(*) 매핑이 필요합니다.

ASP.NET MVC 프레임워크 URL은 파일 확장자가 전혀 없이 끝나는 경우가 많습니다.ASP.NET(또는 다른 런타임)에서 이러한 요청을 처리하려면 파일 확장자에 관계없이 모든 요청을 해당 ISAPI(예:aspnet_isapi.dll).

이는 .jpg, .gif와 같은 미디어를 제공해야 하는 HttpHandler에 대해서도 수행되는 경우가 많습니다.핸들러가 적중되려면 .jpg가 "일반적인" ASP.NET 파일 확장자가 아니더라도 코드에 매핑되어야 합니다.

HTH,
타일러

달리다:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll -i

그러면 aspnet 사용자에 대한 IIS 레지스트리 설정이 재설정됩니다.

가상 디렉터리를 만듭니다.1.변환하려는 디렉토리를 마우스 오른쪽 버튼으로 클릭하십시오.

  • 속성을 선택하세요
    1. 디렉터리에서 만들기를 선택합니다.
    2. 구성에서 추가를 선택합니다.
    3. 실행 파일 삽입의 경우:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

확장 삽입의 경우:.*

  • "파일이 존재하는지 확인"을 선택 취소하십시오.

  • 문서 아래에 진입점 파일을 추가합니다. 즉:Default.htm, index.htm, Global.asax

  • 디렉토리 설정에서

    1. 편집...을 선택하세요.
    2. 익명 액세스를 선택하세요
    3. IIS에서 비밀번호를 제어하도록 허용을 선택 취소하세요.
    4. 기본 인증을 선택 취소하세요.
    5. Windows 통합 인증을 선택 취소하세요.
    6. ASP.NET에서 버전 = v4.0.30319인지 확인하세요.

사용자 이름을 기록해 두십시오. 즉:IUSR_AVSJ82S

실제 디렉터리의 공유 권한을 설정합니다.

  • Windows 탐색기에서 가상 디렉터리로 변환된 실제 디렉터리로 이동합니다.디렉터리 이름을 마우스 오른쪽 버튼으로 클릭하세요.
  • 속성 선택
  • 보안 탭에서 추가를 선택하세요.
  • IIS 사용자 이름을 입력하십시오. 즉:IUSR_AVSJ82S 이름 확인을 클릭하세요.
  • 확인을 클릭하세요
  • 읽기 및 쓰기 권한을 설정합니다.

참고 : 서버 2003 (RPS에 연결 해야하는 앱 개발)에서는 확장을 추가 할 수 없었습니다.*, 나는 경로 절을 수정하는 대체 솔루션을 사용하여 작동했습니다.

컨트롤러 이름 끝에 .aspx를 추가해 보셨나요?

스택 오버플로 질문에 효과가 있었습니다. ASP.NET MVC 호스팅은 어디에서 받을 수 있나요?.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top