2009-05-12 3 views
2

Ich habe ein Szenario, dass mein Load Balancer Port 80 von außen in Port 801 übersetzt, die lokal ist. Und wenn es um Server geht, sieht der Server offensichtlich Port 801 und in Response.Redirect versucht er Port 801 in die URL zu injizieren, auf die er umleitet, aber das ist nicht die gewünschte Lösung für mich.Wie überschreiben Response.Redirect um zu verhindern, dass Port kommt mit

Was ich denke ist zu: 1. Überschreibe Response.Redirect, damit ich den Port daraus entfernen. 2. Haben Sie eine Konfiguration in web.config, um diesen Port zu ignorieren. 3. Die bösartigste Art, das Problem zu beheben, besteht darin, die gesamte Anwendung zu ändern, um die vollständigen URLs in Response.Redirect zu verwenden, was ein großer Schmerz ist.

Gibt es eine gute Lösung für dieses Problem?

Umwelt: Windows Vista, Windows 2003 Server, Windows 2008 Server 6 IIS, IIS 7 ASP.NET C# & VB.NET

Antwort

5

Ok,

Ich habe die Antwort selbst. Ich hoffe, dass diese Lösung auch für andere nützlich sein wird.

Nun, die Antwort ist in der web.config. Unter

<system.web> 
<httpRuntime useFullyQualifiedRedirectUrl="false" maxRequestLength="2526" requestLengthDiskThreshold="2526"/> 
</system.web> 

wo der wichtige Teil falsch ist das Folgende.

useFullyQualifiedRedirectUrl="false" 

Dies gilt standardmäßig.

0

Sie tun müssen eine Umleitung sein, oder können Sie einfach benutze Server.Transfer()?

+0

Ich musste tatsächlich umgeleitet werden. – SevDer

0

Leiten Sie es zum ursprünglichen Hostnamen um, damit es ohne expliziten Port durch den Load Balancer läuft. Das Redirected wird programmgesteuert erstellt (oder kann erstellt werden), daher sollten Sie das Problem vermeiden können.

+0

Das machen wir sowieso, aber Port kommt ins Bild. Und ich habe schon so viele Weiterleitungen (Hunderte von ihnen) – SevDer