2009-05-29 7 views
1

Wir haben eine ASP.NET-Website auf dem Server eines Clients installiert. Diese Website verfügt über einen Webservice mit einigen Webmethoden, die von einem Flash-Objekt aufgerufen werden, um einen Newsfeed anzuzeigen. Wenn Sie zu ihrer Website (z. B. www.domain.com) navigieren, funktioniert alles außer dem Flash.Problem mit falschen URLs in der WSDL eines .NET-Webdiensts

Das Problem ist, dass, wenn wir zum .asmx durchsuchen, der Header zeigt, dass der Host eine Sub-Domain intern zu ihrem Netzwerk (internal.domain.com). Offensichtlich löst dies keine öffentliche IP-Adresse, wenn von außerhalb ihres Netzwerks zugegriffen wird. Dies führt dazu, dass der Flash fehlschlägt, da das Flash-Objekt auf einer Seite eingebettet ist und daher auf der Client-Seite läuft.

Ich habe die Computernamen auf dem Server in Frage, und es auch dann nicht überein „internal.domain.com“ - es ist etwas ganz anderes. Woher kommt diese Information? Es stammt nicht von IIS, da wir keine Host-Header eingerichtet haben und die IP für die Site auf (alle nicht zugewiesen) festgelegt ist.

Wir müssen entweder den Web-Service zwingen, gegen einen bestimmten Host ausgeführt werden, oder wir brauchen, um etwas auf dem Server zu ändern, so dass es zu einem gültigen öffentlich zugänglichen löst Hostnamen ein. Jede und alle Hilfe wird sehr geschätzt !!!!

+0

Ist das eine WCF svc-Datei oder ein einfacher asmx Dienst hinzufügen? –

+0

Ich bin mir eigentlich nicht ganz sicher, da ich nicht die Person bin, die den Web-Service ursprünglich in das Projekt aufgenommen hat. Was wäre der Unterschied? Alles, was ich weiß, ist, dass sich eine .asmx-Datei in einem WebServices-Ordner im Stammverzeichnis der Site befindet und die Codebehind-Datei (.cs) sich im App_Code-Verzeichnis befindet. Das ist so ziemlich alles. – Keith

+0

Wir haben herausgefunden, dass unser Client einen Reverse-Proxy für seinen Web-/Netzwerkverkehr verwendet, so dass der Host-Header, der durchkam, nicht mit der tatsächlichen URL/Hostname übereinstimmte. Sie waren nicht in der Lage, den Fehler zu beheben. Daher mussten wir den Teil des Flashs entfernen, der den Web-Service anrief. – Keith

Antwort

0

Während Sie wahrscheinlich schon getan haben, ist es immer ein guter erster Schritt:

Sie eine globale Suche im Quellcode sowohl das Flash-Objekts und der Web-Service für die Zeichenfolge in Frage.

Es klingt wie jemand/konfiguriert haben, kann die internal.domain.com Zeichenfolge in das Flash-Objekt Anforderung codiert. (Host: ist ein HTTP-Request-Header, nicht Antwort-Header, IIRC.)

+0

Danke für die Antwort, aber es ist kein Problem mit dem Flash, sondern mit dem Web-Service selbst. Wenn Sie in einem Browser direkt zur .asmx-Datei navigieren und auf eine der Webmethoden klicken, untersuchen Sie den SOAP-Header. Daraufhin wird "Host: internal.domain.com" angezeigt. Und ich habe für internal.domain.com innerhalb der gesamten Lösung eine Suche (und wusste, dass keine Ergebnisse, da wir offensichtlich zurückgegeben werden würde nie existiert sogar wusste internal.domain.com). Dieser Hostname muss von der Maschine selbst kommen, aber wo? – Keith

0

Hat das Flash-Objekt erhalten die Web-Service-URL aus dem C# -Code? Ist dies der Fall, wird möglicherweise die Standard-Webdienst-URL abgerufen, die Sie beim Hinzufügen einer Webreferenz zu Ihrem Projekt in VS ausgewählt haben. Daher kann es sein, dass es lokal auf den Computer/Server des Entwicklers verweist, der auf dem Live-Server nicht erkannt wird.

+0

Auch dies wurde auf unseren Dev-Boxen entwickelt, und unsere Entwickler-Boxen haben keine Ahnung, was internal.domain.com ist, so dass es nie eine Chance geben würde, dass dies in Verzug war. Irgendwie löst der Hostname auf dem Server unseres Clients die Adresse internal.domain.com anstelle von www.domain.com auf. Ich überprüfte durch IIS und im Computernamenfeld (mein Computer -> Eigenschaften -> Computername), und nirgendwo ist internal.domain.com erwähnt/referenziert. – Keith

Verwandte Themen