ASP.NET Anwendung/web-service funktioniert nicht auf Windows Vista/IIS 7: Zugriffsrechte-problem?
Habe ich eine .NET 3.5 web-basierte service läuft auf http://localhost/serivce.svc/. Dann habe ich mir einen ASP.NET die Anwendung läuft auf http://localhost/myApp. In Application_Load
meine Anwendung liest die XML-Konfiguration über den web-service. Das funktioniert auf meinem Rechner, aber:
- Unter Windows Vista mit IIS 7 die Anforderung an die web-Dienste nicht.
- Den web service zugegriffen werden kann über den browser ohne Probleme.
- Ich die app konfiguriert pool meiner Bewerbung als admin ausführen. Ich habe den admin der IIS_USRS Gruppe, aber immer noch keinen Zugriff auf den web service.
impersonate=true/false
scheint nicht, einen Unterschied zu machen.
"Anfrage an den webervices fehl" - wie funktioniert es nicht? Ist es eine Ausnahme? Poste es bitte. Gibt es etwas in den Ereignisprotokollen? Post.
Ich bekomme einen 503 von der webservice zurück. Ich schrieb das zugegriffen wird url in einer log-Datei und es funktioniert einwandfrei im browser. Der code funktioniert gut, wenn von Visual Studio gestartet, ich war noch nicht in der Lage, mehr Informationen über den debugger.
Ich habe versucht zu Debuggen, das problem weiter zu. Wenn ich konfigurieren Sie die Anwendung mit einem schlechten URL die nicht existiert, noch bekomme ich eine 503. Das ist seltsam, denn ich würde erwarten, dass ein 404. Ich versuchte, verwenden Sie Fiddler, um einen Blick auf die details der Anfrage, jedoch kein Antrag zeigt sich in Fiddler. Also gehe ich davon aus, dass der Antrag nicht auch Blätter Anwendung. Irgendwie lokale Anfrage muss verboten werden auf dieser Maschine, aber ich weiß nicht, warum und wie zu prüfen?!?
fiddler 'wird nicht angezeigt-sessions auf "localhost" - die IE proxy-bits sind hart codiert, um keine proxies verwenden für localhost, verwenden Sie stattdessen 127.0.0.1./Beispiel (das extra . gemeint ist, dort zu sein)
Ich bekomme einen 503 von der webservice zurück. Ich schrieb das zugegriffen wird url in einer log-Datei und es funktioniert einwandfrei im browser. Der code funktioniert gut, wenn von Visual Studio gestartet, ich war noch nicht in der Lage, mehr Informationen über den debugger.
Ich habe versucht zu Debuggen, das problem weiter zu. Wenn ich konfigurieren Sie die Anwendung mit einem schlechten URL die nicht existiert, noch bekomme ich eine 503. Das ist seltsam, denn ich würde erwarten, dass ein 404. Ich versuchte, verwenden Sie Fiddler, um einen Blick auf die details der Anfrage, jedoch kein Antrag zeigt sich in Fiddler. Also gehe ich davon aus, dass der Antrag nicht auch Blätter Anwendung. Irgendwie lokale Anfrage muss verboten werden auf dieser Maschine, aber ich weiß nicht, warum und wie zu prüfen?!?
fiddler 'wird nicht angezeigt-sessions auf "localhost" - die IE proxy-bits sind hart codiert, um keine proxies verwenden für localhost, verwenden Sie stattdessen 127.0.0.1./Beispiel (das extra . gemeint ist, dort zu sein)
InformationsquelleAutor Achim | 2009-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst Weg, nehmen Sie admin aus der Gruppe "IIS_WPG" hinzu, bevor Sie vergessen, und konfigurieren Sie Ihre app-pool zurück zu normal.
Nun schalten Sie auf WCF für die Protokollierung der Dienst durch ablegen der folgenden, die in Ihrer Website.config-Datei -
Erstellen c:\logs Verzeichnis, und stellen Sie sicher, dass die Anwendungspoolidentität Benutzer hat Vollzugriff auf das Verzeichnis. Jetzt testen Sie Ihre app.
Wenn keine log-Dateien erstellt werden, dann gibt es ein problem, erreichen Sie den WCF-Dienst.
Wenn log-Dateien erstellt werden Sie in der Service Trace viewer kommt als Teil des Windows SDK. Sehen Sie eine rote Meldung, die der log-Eintrag mit der Ausnahme innerhalb der service - dies sollte Ihnen einen Hinweis darauf, wo Sie Ihren service-code schief läuft.
Wenn das problem innerhalb Ihrer app, sondern als service, dann sollten Sie die Protokollierung der Ausnahmen in Ihrem
Application_Load
Ereignis (man sollte die Protokollierung von Ausnahmen sowieso) - aber wenn Sie versuchen, mit einem globalen exception-handler, gut, Ihre app ist andernfalls auf Start, und damit die Globale exception-handler wird nie zu laufen beginnen - anstatt potenzielle failable Szenarien inApplication_Load
würde ich verschieben, die aus einer utility-Klasse, die einen Zugang zu den Informationen, die Sie brauchen (sagen myGlobalThingumy.GetStuff()). Um diese Klasse ein singleton, und dann prüfen, ob Sie das Zeug schon - wenn nicht, dann machen Sie Ihren web-service-Aufruf. Es würde viel zu handeln, die gleiche wie man es inApplication_Load
aber wird es ermöglichen, Globale Fehlerbehandlung zu arbeiten, und macht das Debuggen einfacher.InformationsquelleAutor blowdart
Versuchen zu geben, Zugang zu den IIS_USRS Gruppe auf den Ordner, der die web-service, und prüfen Sie erneut :).
InformationsquelleAutor Wael Dalloul
Wenn man die 503-Fehler, haben Sie darüber nachgedacht betrachten Sie die Ereignisanzeige auf dem Computer zu sehen, ob IIS protokolliert die Ausnahme.
Wenn von Visual Studio gestartet, es läuft in der Visual Studio-web-server oder IIS? (Dies ist ein wichtiger Punkt. Visual Studio, seit 2005, hat seine eigene web-server standardmäßig für web-Projekte. Und dieser web-server ausgeführt wird, die unter Ihrem Benutzer-account-auch entscheidend für das, was als Nächstes kommt.)
Den Sie versuchen zu Lesen, die XML-Güte aus einer Datei. In .NET, um eine Datei Lesen, aus irgendeinem Grund der Benutzer ausführen von code (in IIS7 ich glaube, es ist IIS_USERS-und NETZWERK-SERVICE; in älteren Versionen von IIS, IUSR_MachineName und ASPNET) zu Lesen und schreiben Zugriffsberechtigungen. Also das erste, was ich überprüfen würde ist die ACL, die XML-Datei. Stellen Sie sicher, dass die entsprechenden Benutzer sowohl lese - /Schreibzugriff. Dies wäre die NTFS-Berechtigungen, durch die Art und Weise -- der rechten Maustaste auf die Datei im Explorer wählen Sie Sicherheit, und fügen Sie die entsprechenden perms.
Was es gab ist, dass es funktioniert, wenn Sie führen Sie die Projektmappe von Visual Studio, aber nicht, wenn es ausgeführt wird aus der IIS. Ich glaube nicht, dass Sie bekommen, 503 zurück aus der web-service-Sie sind wahrscheinlich immer 503 von
myApp
selbst.Den Grund für diese 503 ist, weil Sie versuchen, diese Datei zu Lesen auf
Application_Load
. Das bedeutet, dass vor der Seite können sogar versuchen, um bedient zu werden, die XML-Datei, die gelesen werden müssen und analysiert. Bei der Reflexion und re-Lektüre die Frage noch ein mal, ich bin mir nun zu 99,99% sicher, dass die Unfähigkeit, diese Datei zu Lesen (wegen fehlender Schreibrechte), ist die Frage.Mein Rat: Nehmen Sie alles von der admin-Sachen, die Sie getan hatte, nehmen Sie Ihre Benutzer/ACL-Konfiguration zurück zu normal, wie es war-einschließlich der "AppPool". Folgen Sie dann den obigen Empfehlungen erteilen die entsprechenden IIS-Benutzer die Lesen - /schreiben-Zugriff auf die XML-Datei. Ich bin mir zu 99,99% sicher, dass Ihre app funktioniert jetzt auch im IIS.
Ich bin mir nicht sicher, warum, würde aus der Spitze von meinem Kopf, aber ich bin immer noch ziemlich überzeugt, dass deine 503s sind aufgrund
Application_Load
. An dieser Stelle, ich würde wahrscheinlich zu sehen, mehr von der app ... An diesem Punkt, wenn Sie mit WCF, es ist Zeit zu beginnen, mit blowdart Beratung.InformationsquelleAutor John Rudy