none
Ungefragte Namensauflösung von ASP.NET / C# RRS feed

  • Frage

  • Hallo Community,

    ich bin heute auf ein erstaunliches Verhalten gestoßen, habe dazu im Netz auch nichts gefunden und wollte hier fragen, ob und warum dies gewollt ist?

    Szenario:

    Ein Server im Unternehmensnetzwerk, dessen Hostname "foo" ist.
    D.h. ein Page.Request.URL.Host gibt foo zurück, die ASP.NET-Webanwendung ist im Intranet über http://foo zu erreichen.

    Die Webanwendung ist über das Internet unter http://domain.de zu erreichen.

    Wenn ich jetzt folgenden Code in die default.aspx eintrage:

    <div>http://foo</div>

    dann rendert mir das ASP.NET in den im Browser ankommenden HTML-Quellcode knallhart:

    <div>http://domain.de/</div>

    D.h. hier wird ohne jegliche Programmlogik und ungefragt eine DNS-Namensauflösung durchgeführt.
    Es ist mir also nicht möglich, http://foo ausgeben zu lassen, da das einfach knallhart in die öffentliche Webadresse umgewandelt wird.

    PS: Dieses Problem geht sogar so weit, dass ich dieses Verhalten bekomme:

    string strUrl = Page.Request.Url.AbsoluteUri;
    litContainsFoo.Text = strUrl.Contains("foo").ToString();

    Wird die Seite von außen über http://domain.de aufgerufen, ist strUrl = "http://domain.de", und litContainsFoo ist auf True.
    D.h. hier will man mir glauben machen, dass der String "http://domain.de" tatsächlich die Zeichenkette "foo" enthält.

    Das Verhalten ist nicht nachvollzieh- oder debugbar. Es passiert einfach.

    Warum ist das so, wie kann man das deaktivieren und wer kommt auf diese Idee, ASP.NET / C# so einen Mist einzupflanzen?

    Vielen Dank und viele Grüße.

    Montag, 18. Juni 2012 20:37

Antworten

  • Hi,

    danke für die zügige Antwort.

    Nun, jetzt muss ich mich entschuldigen, denn das ganze Verhalten hatte tatsächlich nichts mit ASP.NET bzw. C# zu tun.

    Nach deinem Beitrag habe ich es mit einer reinen .htm-Datei getestet, auch dort gab es dieses Verhalten. Ursache war ein im Intranet sitzender TMG 2010 mit aktivierter Linkübersetzung für speziell diesen Server.

    Das erklärt das Verhalten für beide Fälle, denn jedes vorkommende http://foo wurde in http://domain.de umgewandelt.

    Darauf muss man auch mal kommen. :)

    Viele Grüße

    • Als Antwort markiert Fensterbank Mittwoch, 20. Juni 2012 06:05
    Mittwoch, 20. Juni 2012 06:05

Alle Antworten

  • Hi,

    nur zum Verständnis: Du schreibst wirklich nur:

      <div>http://foo</div>

    (ohne irgendwelche serverseitigen Controls, ...) und im Browser kommt dann

      <div>http://domain.tld/</div>

    an? Falls ja, ist das weder so gewollt noch irgendwo standardmäßig enthalten. Ich könnte mir vorstellen, dass dir da (d)ein UrlRewriting bzw. ARR einen "Streich" spielt. Alternativ gibt es auch Module, die den Content umschreiben. Aber auch das gibt es nicht von Haus aus, das muss man schon selbst aktiviert haben.

    Setzt Du denn eine der genannten Sachen ein?

    ---

    Probier mal bitte, die Adresse http://foo mit einem Browser direkt auf dem Webserver selbst aufzurufen. Passiert das dort auch? Falls nicht, könnte es ggfs. auch eine Firewall, ... sein.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 18. Juni 2012 21:04
    Moderator
  • Hi,

    danke für die zügige Antwort.

    Nun, jetzt muss ich mich entschuldigen, denn das ganze Verhalten hatte tatsächlich nichts mit ASP.NET bzw. C# zu tun.

    Nach deinem Beitrag habe ich es mit einer reinen .htm-Datei getestet, auch dort gab es dieses Verhalten. Ursache war ein im Intranet sitzender TMG 2010 mit aktivierter Linkübersetzung für speziell diesen Server.

    Das erklärt das Verhalten für beide Fälle, denn jedes vorkommende http://foo wurde in http://domain.de umgewandelt.

    Darauf muss man auch mal kommen. :)

    Viele Grüße

    • Als Antwort markiert Fensterbank Mittwoch, 20. Juni 2012 06:05
    Mittwoch, 20. Juni 2012 06:05