Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WebService läuft nur mit localhost nicht mit IP
mack
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

WebService läuft nur mit localhost nicht mit IP

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 730
Herkunft: Dortmund

beantworten | zitieren | melden

Hi mack,

kannst Du den anderen Rechner denn "anpingen"?

MfG
wax
private Nachricht | Beiträge des Benutzers
mack
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dN!3L am .
private Nachricht | Beiträge des Benutzers
mack
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Hallo mack,
Zitat von 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
private Nachricht | Beiträge des Benutzers
mack
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Hallo
Zitat von dN!3L
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.
Zitat von dN!3L
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
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
mack
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Hallo
Zitat von dN!3L
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

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
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 433
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Tom am .
private Nachricht | Beiträge des Benutzers
mack
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Hallo Tom
Zitat von 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
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 433
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
mack
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

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?
Zitat von Tom
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
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 433
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers