3

.net 4.0 웹 응용 프로그램은 내 로컬 컴퓨터와 이전 웹 서버에서 매력처럼 작동합니다. 두 컴퓨터 모두 클래식과 .net 4.0 응용 프로그램 풀을 아무런 문제없이 사용합니다.ASP.NET 컨텍스트 RewritePath 404 오류

하지만 새 웹 서버로 마이그레이션하면 URL을 다시 쓰지 않고 404 오류가 발생합니다. 새로운 응용 프로그램을 간단하게 만들었습니다. 로 아래와 같이 그것은 Default.aspx를 위해 모든 요청의 경로를 다시 작성합니다

Global.asax.cs

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    Context.RewritePath("default.aspx", false); 
} 
난을 할 때 내가 파일 자체에 직접 요청을하지만, 만약 내가 default.aspx에 액세스 할 수 있습니다

'default.aspx'를 제외한 주소 요청 정적 파일 처리기에서 404 오류가 발생합니다.

혹시 고칠 수 있습니까?

당신은 응용 프로그램 풀 ID 설정을 확인해야합니다 here enter image description here

+0

'ahmet'과 같은 모양은 asp.net에서 전달되지 않으므로 RewritePath가 작동하지 않습니다. – Aristos

+0

그래, RewritePath가 작동하지 않습니다. 그래서 그 문제를 해결하는 방법을 묻습니다. –

답변

3

Fullsize 이미지. 웹 응용 프로그램의 appPool Identity가 ApplicationPoolIdentity로 설정되고 Managed Pipeline Mode가 통합이어야합니다.

그런 다음 웹 구성 system.webserver 모듈을 확인하고 응용 프로그램 웹 구성에서이 구성을 활성화하십시오.

<system.webServer><modules runAllManagedModulesForAllRequests="true"> </modules></system.webServer> 
+0

고맙습니다! 재 작성 작업에 필요한 것! – f2lollpll

+0

클래식 모드에서 실행해야하는 기존 ASP가로드되어 관리되는 파이프 라인 모드를 통합 할 수 없습니다. – garryp

1

나는 비슷한 문제가 발생했습니다. Visual Studio 2008 개발 서버 및 IIS 6.5에서 실행되는 APP_Code 폴더에 URL 재 작성 클래스가 있지만 이 아니고 IIS 7.5에서이 아닙니다. "OnBeginRequest"가 실행되지 않는 것처럼 보였고 동일한 404 오류가 발생했습니다. 많은 시행 착오 끝에 내 문제를 해결 한 조합을 찾았습니다.

IIS 7.5 웹 사이트 기본 설정에서 응용 프로그램 풀 설정을 "Classic .NET AppPool"로 변경했습니다. 의 Web.config에서

, 나는 URL을 다시 쓰기 클래스 참조하기 위해 다음과 같은 추가 : 당신은 내가 먼저 응용 프로그램 풀을 변경 시도하고 볼 것이다 글로벌 응용 프로그램 클래스에서 재 작성 코드를 실행하고 있기 때문에

<httpModules> 
    <add name="*URLRewriteClassName*" type="*Namespace.URLRewriteClassName*"/> 
    </httpModules>  

무엇 일어난다. 잘하면이 도움과 행운을 빌어 요!