2010-12-30 3 views
3

Es gibt einen Windows-Dienst unter Windows Server 2003 (Amazon Virtual Machine). Einige Anwendungen können mit ihm kommunizieren (mit Pipes, aber es gibt einen Wrapper, um es zu tun). Es ist getestet und es funktioniert. Außerdem gibt es einen in C# (ASP.NET) geschriebenen Webdienst, der mit dem erwähnten Windows-Dienst kommuniziert. Wenn die Webmethode aufgerufen wird, erstellt sie eine Instanz der Klasse und ruft eine Funktion auf - die Funktion "verbindet" mit dem Windows-Dienst und sendet einen Job an diese. Wenn innerhalb der Webmethode jedoch ein Thread erstellt wird und die Funktion, die mit dem Windows-Dienst "verbindet", innerhalb eines Threads aufgerufen wird, schlägt die Verbindung fehl. Verbindung zum Windows-Dienst verwendet Pipes. Web Service funktioniert auf IIS7. Es ist erwähnenswert, dass alles auf meinem lokalen Rechner entweder vom Debugger (lokaler Server gestartet von VS 2010) oder vom IE funktioniert, wenn ich Web Method on Web Service aufruft, der auf lokalem IIS7 funktioniert. In lokalen alle Werke - aber auf Amazon-Instanz nicht. Ich bin kein Web-Programmierer, also denke ich, dass es ein Problem mit der Sicherheit gibt. Irgendein Hinweis? Vielen Dank.ASMX-Webdienstproblem Kommunikation mit dem Windows-Dienst in einem separaten Thread

EDIT: Uwes Kommentar erinnerte mich - die Web-Methode versucht zunächst, einige Dateien mit http herunterzuladen und speichert sie im Pfad C: \ intepub \ wwwroot \ files \ ". Es funktioniert, wenn Dateien von der Web-Methode heruntergeladen werden , aber der Download schlägt fehl, wenn es von einem anderen in der Web Methode erstellten Thread gemacht wird Ausnahme war: Zugriff wurde verweigert Also änderte ich die Sicherheitseinstellungen für den erwähnten Ordner und erlaubte explizit den von IIS7 (IIS_IUSRS) erstellten Benutzer den Ordner zu lesen/schreiben . jetzt können Dateien heruntergeladen werden Es scheint, dass die Ursache dieser Probleme ist die gleiche

EDIT:.. die Lösung für eine Antwort auf Wills Vorschlag bewegt wird

+0

Können Sie Details posten, wie "Verbindung fehlschlägt" tatsächlich verhält? I.e. detaillierte Fehlermeldung, Stack-Trace, Verhalten, etc. –

+1

Wie die Verbindung fehlschlägt ist nicht relevant, da die "Verbindung" Funktionsaufruf ist. Das Problem ist: Ich kann mit dem Windows-Dienst über den Webdienst kommunizieren, wenn die Kommunikation von demselben Thread stammt, in dem die Webmethode ausgeführt wird; Wenn die Webmethode einen neuen Thread erstellt, schlägt die Kommunikation fehl. Ich habe keine weiteren Details vom erwähnten Windows Service erhalten. Da es von demselben Thread auf Amazon Virtual Machine funktioniert, und nicht, wenn Threads unterschiedlich sind, und es auch auf meinem lokalen Computer funktioniert, sogar mit verschiedenen Threads, dachte ich, dass es etwas mit Sicherheit oder Berechtigungen zu tun hat. Vielen Dank. – Vladimir

+1

@Vladimir: Wenn die Verbindung fehlschlägt, ist es nicht relevant, warum nicht so tun, als ob es überhaupt nicht scheitert? Natürlich ist es relevant. –

Antwort

2

Ok Jungs, die Lösung gefunden und als Werde empfehlen, ich werde es hier als Antwort auf meine eigene Frage posten. Also, die Lösung:

Das Problem lag daran, dass der Thread, der von Web-Methode erstellt wurde, imitiert werden muss. Also, in der Anrufer-Methode musste ich etwas wie:

Das ist alles. Danke an Leute, die meine Frage kommentiert haben und ich hoffe, dass es für jemand anderen nützlich sein wird.

Verwandte Themen