Laden...

ScriptManager wird mit absolutem Pfad aufgerufen

Erstellt von T-Man vor 16 Jahren Letzter Beitrag vor 16 Jahren 909 Views
T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 16 Jahren
ScriptManager wird mit absolutem Pfad aufgerufen

Hallo!

Ich habe folgendes Problem:

In meinem ASP.NET (2.0) Projekt nutze ich auch Ajax. Das funzt auch alles wunderbar, solange der Kunde keine Umleitung benutzt.

Wenn er eine Umleitung benutzt tritt folgendes Problem auf:

Die Seite ist intern z.B. über http://rechnername/meinprojekt/ zu erreichen.
Nun gibt es eine Umleitung für Extern. z.B.: https://www.blabla.de/tollesprojekt/

In der Seite sind nun für das Ajax Scriptaufrufe mit absoluter url drin:

Beispiel:
<script src="/meinprojekt/WebResource.axd?d=..." type="text/javascript"></script>

und

<script src="/meinprojekt/ScriptResource.axd?d=..." type="text/javascript"></script>

Beim Zugriff von Intern ist alles OK. Aber bei Zugriff von Extern natürlich nicht.
Das liegt an dem absoluten Verweis /meinprojekt/...
Wäre er /tollesprojekt/... wäre alles super, aber so ist es nicht.

Nun meine Frage:

Wie kann ich dafür sorgen, daß nicht absolute Pfade angegeben werden?
Es würde ja wunderbar funktionieren wenn da

src="ScriptResource.axd?..."

stehen würde statt

src="/meinprojekt/ScriptResource.axd?..."

Oder ist das evtl. ein Bug und ich kann an den absoluten Pfaden nichts ändern?

Vielen Dank schonmal in vorraus.
T-Man

M
303 Beiträge seit 2006
vor 16 Jahren

Vielleicht verstehe ich dich ja falsch, aber ist das nicht ein rein administratives Problem?
Die Weiterleitung muss so eingerichtet werden, dass sie in das Wurzelverzeichnis (das Verzeichnis über "meinprojekt") zeigt, und es somit keinen Unterschied für deine ASP.NET Anwendung macht, ob der Benutzer von Domain A oder Domain B kommt.

Es würde ja wunderbar funktionieren wenn da
src="ScriptResource.axd?..."
stehen würde

Guter Punkt, warum steht das denn da nicht? "meinprojekt" ist ja dein Projektverzeichnis. Warum musst du in dieses Verzeichnis überhaupt verweisen? Was liegt denn darüber im Wurzelverzeichnis?

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo zusammen,

bei ASP.NET Projekten kann man mittels "~" das Server Root erreichen. Also könnte hier auch so etwas in der Pfadangabe helfen?

Viele Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 16 Jahren

Ich setze ja die Verweise nicht selbst. Die werden gesetzt. Sonst würde ich es ja richtig machen.

Der Kunde hat das Projekt auf seinem Server installiert.
In welches Verzeichnis ist völlig egal.
Er hat nun im IIS ein Virtuelles Verzeichnis namens "meinprojekt" angelegt, das auf das Projekt verweist. Wenn er nun intern darauf zugreifen will ruft er halt http://rechnername/meinprojekt auf. Da wird dann die Seite zusammengebaut und u.a. kommt darin der Verweis /meinprojekt/ScriptResource.axd vor. Der Funktioniert dann auch. Es läuft alls bestens.
Nun hat der Kunde noch eine Umleitung von https://www.tollerkunde.de/tollesprojekt auf http://rechnername/meinprojekt. Wie genau er das eingerichtet hat, weiß ich nicht. Er will es so und soll funktionieren.
Nun ist aber eben das Problem da, das wohl durch diese Umleitung beim Zusammenschrauben der Verweise offenbar http://rechnername/meinprojekt als Basis angesehen wird und die Verweise werden auf /meinprojekt gelegt.
Der Browser ruft dann logischerweise https://www.tollerkunde.de/meinprojekt/ScriptResource.axd auf und bekommt nichts.

Ich habe das Problem bei dem Kunden nun so gelöst, daß er das interne virtuelle Verzeichnis umbenannt hat in tollesprojekt.

Das kann aber letztlich nicht die Lösung sein. Was ist z.B. wenn ein Kunde sowohl von www.server1.de aus, als auch von www.server2.de/verzeichnis aus eine Umleitung auf http://rechnername/meinprojekt legt. Dann kann die eine Umleitung ja gar nicht mehr funktionieren.

Natürlich kann man durch geschicktes Umleiten die Probleme lösen, aber das Umleiten ist nunmal Sache des Kunden. Und ich möchte mein Projekt gerne so haben, das es mit jeder Umleitung funktioniert. Das würde es auch, wenn das Ajax die Verweise nicht absolut, sondern relativ setzen würde.

Ich glaube mittlerweile, daß das ein Bug des Ajax ist und man da nichts dran ändern kann. Andererseits kann ich mir nicht vorstellen, daß dieser Bug nicht schon längst aufgefallen ist und behoben wurde.

Nochmal Danke für alle (bisherigen und künftigen) Kommentare
T-Man

M
303 Beiträge seit 2006
vor 16 Jahren

Sorry ich verstehe immernoch nicht, warum "meinprojekt" in deiner URL überhaupt vorkommt. Da es der Wurzelordner des Projektes ist dürfte der überhaupt nicht festgeschrieben werden. Und wie norman_timo bereits geschrieben hat, erreicht man mit dem ~-Operator das Wurzelverzeichnis. Damit sollte dir es wohl möglich sein, eine projektverzeichnisnamenunabhängige URL zu schreiben.

T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 16 Jahren

Die URL schreibe nicht ich. Die wird automatisch eingetragen. Durch das Ajax.

Ich habe in meiner aspx - Seite folgendes Eingetragen um Ajax nutzen zu können:

<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>

und desweiteren

<asp:ScriptManager ID="ScriptManager1" runat="server" />

In der resultierenden Html-Seite, die beim Browser ankommt steht nun u.a.

<script src="/meinprojekt/ScriptResource.axd?d=..." type="text/javascript"></script>

wenn im IIS ein Virtuelles Verzeichnis namens meinprojekt angelegt wird, das auf das Projekt verweist und das Projekt über dieses virtuelle Verzeichnis aufgerufen wird.