2011-02-03 4 views
2

로컬로 .NET 3.5에 UrlRewriter.NET이 설치되어 있고 제대로 작동하는 웹 프로젝트가 있습니다..NET 4.0이 작동하지 않는 UrlRewriter.NET

그때 .NET 4.0로 업그레이드 이것이 내가 다시 작성 내 서버에 URL을이 .NET 4.0 프로젝트를 이동 작동을 중지하면 Visual Studio 2010에서 Visual Studio 2010을

에 내 로컬 PC에서 작업을 계속했다.

여기 (여기에 읽기 쉽도록 응축) 내 Web.config의 서버에 넣을 때

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
     <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/> 
    </configSections> 

    <system.web> 

    </system.web> 
    <rewriter> 
     <rewrite url="~/Neat-Url" to="~/Ugly-Url.aspx?id=1"/> 
    </rewriter> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false"/> 
     <modules runAllManagedModulesForAllRequests="true"> 
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule"/> 
     </modules> 
    </system.webServer> 
</configuration> 

는 그냥 404

흥미로운 발견을 반환합니다./Neat-Url이라는 디렉토리를 만들면 URL 다시 쓰기가 다시 시작되어 /Ugly-Url.aspx?id=1로 리디렉션됩니다.

참고 : 예. .NET 4.0은 자체 URL 재 작성이 있고 또한 UrlRewriter와 작동하는 기존 코드가 있습니다.

서버 구성 문제이거나이를 해결할 수있는 방법이 있습니까?

[업데이트] : 확인되었으므로 다른 것을 결정했습니다. 파일이나 디렉토리가 실제로 존재하지 않는 한 URL 재 작성기는 작동하지 않습니다.

예를 들면./Directory1을 /Directory1.aspx로 리디렉션하려면/Directory1이 있어야하며 모든 것이 잘 작동합니다.

/File1.aspx를 /File2.aspx로 리디렉션하려는 경우이 방법도 사용할 수 있지만 File1.aspx는 파일 시스템에 있어야합니다.

그렇지 않으면 계속해서 404가 발생합니다. .NET을 통해 해결할 수있는 것으로 보이며 File1.aspx를 호출 할 때 web.config와 관련이 있으며 런타임에 전달되고 asp.net 404가 발생합니다. 디렉토리 호출 단지 웹 호스트를 얻을 수 (404)

[업데이트 2] : 그때, 내 웹 설정에서

<httpModules> 

부분을 제거 다음 또한 validateI 변경

<identity impersonate="false"/> 

추가 ntegratedModeConfiguration = "true"입니다. 여전히 동일한 문제가 있지만 적어도 통합 모드에서 유효합니다.

[업데이트 3] : 지금 ManagedFusion은 아직 오류가 발생하고 있지만 서버 지원이 아닌 내 구성 오류와 비슷합니다. 나는 다른 질문을 제기했다 ManagedFusion Url Rewriting not working.

잘하면 내 문제를 해결할 것입니다.

+0

Stackflow에서 10 분 안에 답변을 얻지 못했던 질문입니다. 나는 곤경에 처해야한다 :) –

+0

왜 마이크로 소프트가 제공 한 내장형 rewriter를 사용하지 않는가? – leppie

+0

본인은이 질문의 임의 투표 마감 및 반대 투표에 동의하지 않습니다. 예, 그것은 5 살이지만 문제는 여전히 오래된 기술에만 있습니다. 이 질문에 대한 오프 토픽 플래그는 재현 될 수 있기 때문에 유효하지 않은 것으로 보이며 간단한 인쇄 오류로 인한 것이 아닙니다. downvote도 완전히 정당화되지 않은 것 같습니다. –

답변

1

변경된 모듈을 Url Rewrite Module으로 변경하십시오. 나는 Godaddy와 같은 문제가 있었고, 그래서 변화는 내 문제를 해결했다.

1

.net 4.0 및 GoDaddy에서 작동하는 대체 rewriters를 사용할 수 있습니다. 관리 퓨전 URL Rewriter 및 역방향 프록시와 같은.

내 생각 엔 GoDaddys 중간 트러스트 구성과 관련된 일부 사용 권한으로 인해 표시되는 불일치가 발생합니다.

+0

모든 요청이 ASP.NET 런타임에 전달 된 것처럼 보이므로 URL 재 작성이 작동하지 않는 이유는 디렉토리 또는 거기에 파일. –

3

어떤 종류의 응용 프로그램 풀을 사용하고 있습니까? UrlRewrite가 .NET 용 Classic Application Pool과 함께 작동하지 않으면 응용 프로그램 풀이 .NET 4.0 파이프 라인 모드에 대해서만 구성되어야합니다.

+0

통합 파이프 라인 (클래식이 아님)을 사용 중입니다. –

+0

클래식에서 파이프 라인으로 전환하면 이전에 공을 재생하지 않았을 때 Godaddy (.net4, iis7)에서 UrlRewrite가 실행됩니다. – Ted

0

URL Rewriter.NET이 훌륭하게 재생되지 않는 것처럼 보입니다.

아마도 내 응용 프로그램이 가상 디렉터리에서 실행되기 때문일 수 있습니다.

가상 디렉터리에 문제가 있기 때문에 URL 라우팅이 아닌 Microsoft의 URL 다시 쓰기를 관리 할 수있었습니다.

그래서 내가 사용할 것입니다.

나는 URLRewriter.NET이 하루를 보냈다 고 말하는 것이 합리적이라고 생각합니다.

0

이 답변 내에서 GoDaddy 계정에서 작동하도록 UrlRewriter을 가지고 :

Can Intelligencia.UrlRewriter be made to work in IIS7?

이 솔루션은 당신의 Web.config에 이것을 추가하는 것입니다 gilly3 @

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true"> 
    <add name="UrlRewriter" 
     type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" /> 
    </modules> 
</system.webServer> 
0

는 응답 권리가! 난 그냥 내 자신의 시스템 (IIS 8, .NET 4.5 프레임 워크)에 그것을 테스트했습니다

원래

내가 .NET 프레임 워크 3.5 아래에 일하고있다 내 Web.config를,이 있었다

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 

그래서 아래로 변경하고 작동합니다!

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" /> 
    </modules> 
</system.webServer> 
0

실제로 원하는 것은 무엇입니까? URL 다시 쓰기가 URL을 다시 작성한 후에 그렇지 않으면 .NET 응용 프로그램이 URL을 다시 라우팅 할 수 있기 때문에이 설정이 false인지 확인하십시오.

<system.webServer> 
     <modules runAllManagedModulesForAllRequests="true"> 
관련 문제