Laden...

WebService läuft nur mit localhost nicht mit IP

Erstellt von mack vor 14 Jahren Letzter Beitrag vor 14 Jahren 15.721 Views
M
mack Themenstarter:in
7 Beiträge seit 2009
vor 14 Jahren
WebService läuft nur mit localhost nicht mit IP

Liebe Forummitglieder,

ich bin neu im Forum, so verzeiht bitte falls meine Frage hier falsch ist. Mein Problem ist meine ich eine banale Sache, trotzdem habe ich nirgendwo im Netz oder auch in msdn eine Lösung dafür gefunden, so bitte verzweifelt um Hilfe:

Ich habe in Visual Studio 2008 Prof. (unter XP Prof.) einen WebService angelegt, einfach nur "Hello World". Es ist lokal auf der Platte unter C:\Inetpub\wwwroot\ abgelegt (das virtuelle Verzeichnis ist für Skripte zugelassen). Es funktioniert auch wunderbar wenn ich es ausführe (F5): Mozilla wird geöffnet mit der URL:

"http://localhost:2017/hebeamwww/Service.asmx"

und der Webservice läuft.
Nun möchte ich diesen Webservice von anderen Rechnern aus benutzen, was ja Sinn des Webservices ist. Dafür habe ich "localhost" durch die IP-Adresse des pcs ersetzt, also

"http://172.18.3.5:2017/hebeamwww/Service.asmx"

(der WebService läuft im Hintergrund wie bisher), erhalte jedoch die folgende Fehlermeldung:

Verbindung fehlgeschlagen
Firefox kann keine Verbindung zu dem Server unter 172.18.3.5:2017 aufbauen.
Obwohl die Website gültig erscheint, konnte keine Verbindung aufgebaut werden.
* Könnte die Website temporär nicht verfügbar sein? Versuchen Sie es später nochmals.
* Können Sie auch andere Websites nicht aufrufen? Überprüfen Sie die Netzwerk-Konfiguration des Computers.
* Wird Ihr Computer oder Netzwerk durch eine Firewall oder einen Proxy geschützt? Falsche Einstellungen können den Web-Zugriff stören.

Ich habe schon herausgefunden, dass man dafür den WebService WEITERGEBEN soll (oder deploy auf Englisch), habe aber nirgends eine sinnvolle Anleitung dafür gefunden, wie es gehen soll. Kann mir jemand bitte dabei helfen? (ein Link auf so'ne Anleitung wäre schon mal Klasse)

Beten Dank im Voraus!

731 Beiträge seit 2006
vor 14 Jahren

Hi mack,

kannst Du den anderen Rechner denn "anpingen"?

MfG
wax

M
mack Themenstarter:in
7 Beiträge seit 2009
vor 14 Jahren

Hallo

ja, geht problemlos. Aber um es nochmal klar zu stellen: ich schaffe es den WebService zu verwenden nicht mal von demselben pc, auf dem er läuft, wenn ich seine IP anstatt von "localhost" verwende.

Grüße

mack

2.891 Beiträge seit 2004
vor 14 Jahren

Hallo mack,

der Webservice wird vom IIS gehosted? Denn die Webservices gehosted vom VisualStutio/Cassini sind nicht von "Außerhalb" erreichbar.

Ich nehme mal an, der IIS hosted: Hast du denn die Webseite ordentlich eingerichtet? Sind die Hostheader richtig gesetzt (also Standardwebseite wenn IP benutzt wird)?

Gruß,
dN!3L

M
mack Themenstarter:in
7 Beiträge seit 2009
vor 14 Jahren

Hallo dN!3L (habe ich's richtig abgetippt? 😃 )

Ich muss gestehen, bis gestern habe ich nichts von Cassini gehört, das lag der Vermutung nahe, dass ich es nicht verwende. Nun weiss ich was Cassini ist und die Antwort ist: nein, ich verwende kein Cassini. Ich habe unter Systemsteuerung->Software den IIS installiert und meine auch den zu verwenden. Habe in den Projekteigenschaften meines Webservices in VS nachschauen wollen, welchen Webserver er eigentlich benutzt, aber dafür gibt es keine Einstellung ob man IIS oder was anderes verwenden möchte. Das finde ich etwas komisch. Aber abgesehen davon, würde ich vermuten, dass ich in meinen IIS-Einstellungen was falsch habe, die meinen WebService nur mit "localhost" ausführen lassen, oder?

Gruß

mack

2.891 Beiträge seit 2004
vor 14 Jahren

Hallo mack,

[...]würde ich vermuten, dass ich in meinen IIS-Einstellungen was falsch habe, die meinen WebService nur mit "localhost" ausführen lassen, oder?

Wie schon geschrieben, dieses Verhalten würde ich mir am ehesten dadurch erklären, dass du keine Webseite eingerichtet hast, die (nur) auf die IP-Adresse als Hostheader reagiert. Eine Möglichkeit wäre, du guckst in den Eigenschaften der Webseite, dann "Website">"IP-Adresse">"Erweitert" und trägst da die IP als Hostheader ein.
Es müsste aber auch eine andere Variante geben, in der du diese Webseite einfach als Standardwebsite deklarierst und so die Anfrage, die nur an die IP gerichtet sind, dann auch dorthin geleitet werden.

Beste Grüße,
dN!3L

M
mack Themenstarter:in
7 Beiträge seit 2009
vor 14 Jahren

Hallo

Wie schon geschrieben, dieses Verhalten würde ich mir am ehesten dadurch erklären, dass du keine Webseite eingerichtet hast, die (nur) auf die IP-Adresse als Hostheader reagiert. Eine Möglichkeit wäre, du guckst in den Eigenschaften der Webseite, dann "Website">"IP-Adresse">"Erweitert" und trägst da die IP als Hostheader ein.

Habe ich eingetragen, hat aber leider nicht geholfen. Ich glaube aber, dass die Webseite an sich funktioniert. Zum Test habe ich "http://172.18.3.5" im Webbrowser eines anderen pcs im selben LAN eingetragen, und da habe ich meine default.htm auf dem Bildschirm angezeigt bekommen. Das heisst doch, dass die Webseite richtig eingerichtet ist, oder? Nur halt nicht ganz richtig für die Ausführung eines Webservices, vermute ich.

Es müsste aber auch eine andere Variante geben, in der du diese Webseite einfach als Standardwebsite deklarierst und so die Anfrage, die nur an die IP gerichtet sind, dann auch dorthin geleitet werden.

Verstehe nicht ganz. Diese Webseite ist die Standardwebseite, ich habe nur eine (also unter Systemsteuerung->Verwaltung->Internetinformationsdienste habe ich unter "Webseites" nur die eine "Standardwebseite").

Grüße

mack

2.891 Beiträge seit 2004
vor 14 Jahren

Hallo mack,

OK, deine Seite ist also (auch) unter der IP erreichbar. So weit, so gut (dann hat sich das mit der Standardwebsite und so auch erledigt).

Und dein Problem ist jetzt, dass nur das Testformular im Browser für den Webservice nicht angezeigt wird(?)
Das ist aus Sicherheitsgründen von Remotemaschinen nicht möglich. Wie man das abstellt, steht z.B. da: http://vidmar.net/weblog/archive/2004/07/16/380.aspx

Beste Grüße,
dN!3L

M
mack Themenstarter:in
7 Beiträge seit 2009
vor 14 Jahren

Hallo

Und dein Problem ist jetzt, dass nur das Testformular im Browser für den Webservice nicht angezeigt wird(?)
Das ist aus Sicherheitsgründen von Remotemaschinen nicht möglich. Wie man das abstellt, steht z.B. da:
>

Ich glaube nicht. Meine Fehlermeldung (nach Eingabe von "http://172.18.3.5:3084/wwwroot/Service.asmx" im Webbrowser des pcs wo der Webservice läuft oder eines anderen pcs in unserem LAN) lautet nicht etwa "The test form is only available for requests from the local machine." wie es in der von dir zitierten Seite beschrieben wird. Meine Fehlermeldung ist ganz einfach

Fehler: Verbindung fehlgeschlagen
Firefox kann keine Verbindung zu dem Server unter 172.18.3.5:3084 aufbauen.

Gleichzeitig wenn ich aber "http://172.18.3.5" eingebe, sehe ich meine default.htm Datei (als Test das der webserver an sich geht).

Diese Passage in section <webServices> der web.config habe ich trotzdem eingefügt, hat aber nicht geholfen.

Grüße

mack

T
433 Beiträge seit 2006
vor 14 Jahren

Hallo mack,

aufgrund der unterschiedlichen Ports die du bei den Urls aufrufst, gehe ich davon aus das du Cassini verwendest.
Daher kannst du auch nur lokal auf die Seite zugreifen.

Schau dir mal ein paar Tutorials an wie du ASP.NET veröffentlichen (publish) kannst.

Die Einstellungen welchen Server du verwendest findest du in den Projekt Eigenschaften (nicht Solution)

Edit: Schau mal hier rein Einstieg in ASP.NET

Gruß,
Tom

M
mack Themenstarter:in
7 Beiträge seit 2009
vor 14 Jahren

Hallo Tom

aufgrund der unterschiedlichen Ports die du bei den Urls aufrufst, gehe ich davon aus das du Cassini verwendest.
Daher kannst du auch nur lokal auf die Seite zugreifen.

Nein, das ist kein Cassini. Jetzt habe ich endlich die Server-Einstellungen gefunden. Wie sich zeigt, habe ich bisher den Visual Studio Development Server verwendet. Nun habe ich den IIS-Server ausgewählt (Vorsicht: den IIS-Server zur Auswahl hat man nur wenn man den Webdienst über Hinzufügen->Projekt->Webdienst hinzufügt, nicht dagegen wenn man Hinzufügen->Webseite->Webdienst auswählt!), bin also einen Schritt weiter. Nun habe ich die folgende Fehlermeldung im Webbrowser, und zwar egal ob ich localhost oder die IP in der URL des Webservice-Aufrufs verwende. Die Fehlermeldung lautet:

Serverfehler in der Anwendung
Fehler beim Zugriff auf die IIS-Metabasis
Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

Ausnahmedetails: System.Web.Hosting.HostingEnvironmentException: Fehler beim Zugriff auf die IIS-Metabasis.

Das zur Ausführung von ASP.NET verwendete Prozesskonto muss über Lesezugriff auf die IIS-Metabasis (z.B. IIS://servername/W3SVC) verfügen. Informationen zum Ändern der Berechtigungen für die Metabasis finden Sie unter http://support.microsoft.com/?kbid=267904.

Nun habe ich also die empfohlene Hilfe von Microsoft gelesen, halbfix verstanden und das Tool zum Ändern der Zugriffsberechtigung heruntergeladen und die Zugriffsrechte für Everyone mit dem Befehl

Metaacl.vbs IIS://LOCALHOST/W3SVC Everyone RWSUED

geändert. Mehr machen als jedem alle Rechte zu geben kann man wohl nicht, oder? Ich weiss, es ist unter Umständen gefährlich, das Risiko habe ich aber auf mich genommen 🙂. Leider ohne Erfolg. Ich bekomme immer noch dieselbe Fehlermeldung wie oben zitiert. Hat jemand da vielleicht eine Idee?

Danke und Grüße

mack

T
433 Beiträge seit 2006
vor 14 Jahren

Hallo mack,

der Visual Studio Development Server ist Cassini. Aber das nur nebenbei.

Zumindest haben wir jetzt schon mal das eigentliche Problem.

Ja das mit den Berechtigungen hab ich früher auch schon öfters mal gehabt.

Versuch mal


C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

Gruß,
Tom

M
mack Themenstarter:in
7 Beiträge seit 2009
vor 14 Jahren

Hallellujah, es funktioniert!!!!!!!

Die asp.net-Installation hat es gebracht. Heisst es dass es bei mir vorher gar nicht installiert war und ich hab's nicht gemerkt?

der Visual Studio Development Server ist Cassini. Aber das nur nebenbei.

Ah, sorry, wusste ich nicht, das Wort Cassini stand nirgendwo im Klartext 🙂.

Übrigens, nach der asp.net-Installation war es tatsächlich so dass es nur von meinem pc aus ging, nicht von anderen. Da muss man noch diese paar Zeilen code in der web.config laut
http://vidmar.net/weblog/archive/2004/07/16/380.aspx
einfügen.

Nun läuft also alles.

Liebes Forum, recht vielen Dank, an dem Problem habe ich mit Pausen dazwischen seit gut 1 Monat gekämpft und nun ist es in zwei Tagen gelöst.

Euer ehrfürchtiger Diener

T
433 Beiträge seit 2006
vor 14 Jahren

Die automatische ASP.NET Registrierung erfolgt nur wenn der IIS schon vor der .NET Framework Installation auf der Maschine installiert wurde.

Wenn du den IIS nachträglich installierst musst du die Registrierung von Hand ausführen. Btw die kannst du immer wieder ausführen ohne dabei mit Problemen zu rechnen. Falls du z.B. den ASPNET User löscht, Berechtigungen manuell neu setzt etc.

Gruß,
Tom