2009-07-01 10 views
1

Ich versuche, einen Webdienst asynchron aus meiner ASP.NET-Webanwendung auszuführen. Dieser spezielle Webservice (.asmx) gehört zum selben Projekt wie meine Webanwendung. Ich habe bemerkt, dass, wenn ich den Webdienst von einer anderen Web-Anwendung verweisen, ich die Web-Service aufrufen können asynchron mit dem folgenden Code:ASP.NET - asynchroner Webdienst

TestService service = new TestService(); 
service.TestMethod(); 

Allerdings, wenn ich die Web-Service über eine separate Web-Anwendung verweisen, merke ich, dass ich die Möglichkeit haben, sie auszuführen asynchron mit dem folgenden Code:

ServiceProxy.TestService service = new ServiceProxy.TestService();   
service.TestMethodAsync(); 

der Trick ist, möchte ich asynchron den Webdienst von einer Webseite ausführen, die in derselben Anwendung wie meine Web-Service ist. Ist das möglich? Wenn das so ist, wie?

Ist es möglich, ohne meinen Web-Service in ein separates Projekt zu setzen?

Danke,

+0

Das erste Codebeispiel ist ein Beispiel für den Aufruf der Methode _synchronously_ aus dem selben Projekt, oder? Nicht asynchron, wie die Frage sagt. – GBegen

+0

Nein, es ist schlimmer. Siehe meine Antwort. –

+0

Ich habe festgestellt, dass das OP die WebService-Implementierungsklasse direkt verwendet und es nicht als Web-Service bezeichnet, aber mein Punkt war, dass die Frage wie geschrieben, dass ein asynchroner Aufruf aufruft, wenn es eindeutig synchron ist. – GBegen

Antwort

0

Es ist immer noch die gleiche Anwendung als Web-Service verweisen könnte, könnte es nicht?

2

Zunächst empfehle ich Ihnen, Ihre Webdienste in ein separates Projekt zu stellen.

Zweitens, wenn Sie genannt:

TestService service = new TestService(); 
service.TestMethod(); 

Sie in eine Falle fielen, die Sie möglich gemacht, weil sie im selben Projekt waren. Sie haben die Testmethode direkt aufgerufen. Das ist kein Webservice-Aufruf, sondern ein direkter Aufruf an die TestMethod.

Ich schlage vor, dass Sie den Dienst in ein anderes Projekt einfügen und dann über eine Web Reference oder Service Reference von Ihrer Webanwendung aus darauf zugreifen.

BEARBEITEN: Sie könnten es in der gleichen Anwendung behalten, aber das wird weiterhin verwirrend sein. Sie müssen immer einen Webverweis oder eine Servicereferenz verwenden, wenn Sie sie als Webdienst aufrufen.

Wenn es Teil der gleichen Anwendung ist, warum ist es überhaupt ein Webdienst?

0

Um Verwirrung zu vermeiden, sollten Sie Ihre Webdienstmethode wahrscheinlich nicht direkt aufrufen. Lassen Sie diese Methode von ASP.Net als Antwort auf eine Webmethodenanforderung aufgerufen.

Sie können jedoch die Implementierung Ihrer Webmethode in eine andere Klasse verschieben, die jederzeit von der Webdienstklasse und Ihrer Webanwendung instanziiert und aufgerufen werden kann. Wenn Sie mit dieser Klasse eine ihrer Methoden asynchron aufrufen möchten, sollten Sie einen Delegaten erstellen und BeginInvoke() und EndInvoke() verwenden.

Verwandte Themen