deathhero Geschrieben 6. Oktober 2005 Teilen Geschrieben 6. Oktober 2005 Hi, So noch eine Frage von mir. Arbeitet jemand hier im Forum mit .NET Webservices(vorzugsweise in C# programmiert) Denn dazu hätte ich auch noch eine kleine Frage, welche mir noch keiner so richtig beantworten konnte. sg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast eleon Geschrieben 6. Oktober 2005 Teilen Geschrieben 6. Oktober 2005 was willst wissen? kann jemand aus meinem team fragen. oder eventuell sogar selbst beantworten (aber wozu gibts fussvolk :devil: ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
deathhero Geschrieben 6. Oktober 2005 Autor Teilen Geschrieben 6. Oktober 2005 optimal..... moment...ich such nur den ganzen code zusammen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
werner5 Geschrieben 6. Oktober 2005 Teilen Geschrieben 6. Oktober 2005 Da hamma ja genug experten beisammen... ich kann wahrscheinlich auch helfen... lg werner5 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
deathhero Geschrieben 6. Oktober 2005 Autor Teilen Geschrieben 6. Oktober 2005 Also: Ich arbeite mit dem MS Visual Studio 2005. Ich erstelle ein neues ASP.NET Webservice. Es entstehen 2 Dateien: Service.cs / Service.asmx Code von Service.cs using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Service : System.Web.Services.WebService { public Service () { } [WebMethod] public string HelloWorld() { return "Hello World"; } } Wenn ich das Projekt ausführe kann ich das Service ohne Probleme testen. Als Resultat bekomme ich folgende XML Datei im Browser angezeigt: Hello World Sprich das Service funktioniert. Laut meinem Buch muss ich jetzt meinem Projekt eine Web Referenz hinzufügen(Siehe Bild 1) Funktioniert tadellos und es entstehen folgende Dateien(Bild 2) Um das Service jetzt von einem anderen Programm aus konsumieren zu können muss man eine Proxy Klasse erstellen.( Wie das im Studio geht, hab ich noch nicht herausbekommen) deshalb gebe ich den Befehl eben in der Konsole ein. Kompiliert wird mit WSDL.exe Befehl:wsdl /o:E:Proxy.cs http://localhost:3315/WebSite1/Service.asmx?wsdl Optimal Proxy Klasse wird erstellt: Folgender Code: using System; using System.ComponentModel; using System.Diagnostics; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Serialization; /// [system.Diagnostics.DebuggerStepThroughAttribute()] [system.ComponentModel.DesignerCategoryAttribute("code")] [system.Web.Services.WebServiceBindingAttribute(Name="ServiceSoap", Namespace="http://tempuri.org/")] public partial class Service : System.Web.Services.Protocols.SoapHttpClientProtocol { private System.Threading.SendOrPostCallback HelloWorldOperationCompleted; /// public Service() { this.Url = "http://localhost:3315/WebSite1/Service.asmx"; } /// public event HelloWorldCompletedEventHandler HelloWorldCompleted; /// [system.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/HelloWorld", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public string HelloWorld() { object[] results = this.Invoke("HelloWorld", new object[0]); return ((string)(results[0])); } /// public System.IAsyncResult BeginHelloWorld(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("HelloWorld", new object[0], callback, asyncState); } /// public string EndHelloWorld(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((string)(results[0])); } /// public void HelloWorldAsync() { this.HelloWorldAsync(null); } /// public void HelloWorldAsync(object userState) { if ((this.HelloWorldOperationCompleted == null)) { this.HelloWorldOperationCompleted = new System.Threading.SendOrPostCallback(this.OnHelloWorldOperationCompleted); } this.InvokeAsync("HelloWorld", new object[0], this.HelloWorldOperationCompleted, userState); } private void OnHelloWorldOperationCompleted(object arg) { if ((this.HelloWorldCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.HelloWorldCompleted(this, new HelloWorldCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } /// public new void CancelAsync(object userState) { base.CancelAsync(userState); } } /// public delegate void HelloWorldCompletedEventHandler(object sender, HelloWorldCompletedEventArgs e); /// public partial class HelloWorldCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { private object[] results; internal HelloWorldCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : base(exception, cancelled, userState) { this.results = results; } /// public string Result { get { this.RaiseExceptionIfNecessary(); return ((string)(this.results[0])); } } } Jetzt erstelle ich ein überhaupt anderes Projekt. Zum Testen eine reine Konsolen Anwendung. Die Proxy Klasse wird in da Projekt eingebunden. Schaut so aus (Bild3) Mein Testprogramm schaut so aus: using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { try { Service s1 = new Service(); Console.WriteLine("Testausgabe: {0}", s1.HelloWorld()); } catch (Exception e) { Console.WriteLine("Nix geht: {0}",e.GetBaseException()); } } } } Und genau hier liegt mein Problem. Anstatt meine HelloWorld Methode aufzurufen, geht er immer in den catch Teil. Folgende Meldung wird ausgegeben: Nix geht: System.Net.WebException: The request was aborted: The connection was c losed unexpectedly. at System.Net.ConnectStream.InternalWrite(Boolean async, Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state) at System.Net.ConnectStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.Xml.XmlUtf8RawTextWriter.FlushBuffer() at System.Xml.XmlUtf8RawTextWriter.Flush() at System.Xml.XmlWellFormedWriter.Flush() at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Obje ct o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Obje ct o, XmlSerializerNamespaces namespaces, String encodingStyle) at System.Web.Services.Protocols.SoapHttpClientProtocol.Serialize(SoapClientM essage message) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodN ame, Object[] parameters) at Service.HelloWorld() in E:\MATURAPROJEKT 2005-2006\Test\ConsoleApplication 1\Proxy.cs:line 42 at ConsoleApplication1.Program.Main(String[] args) in E:\MATURAPROJEKT 2005-2 006\Test\ConsoleApplication1\Program.cs:line 14 Drücken Sie eine beliebige Taste . . . Habe ich da ein Problem mit den Namespaces, oder denke ich eigentlich komplett falsch. Info: Arbeite mit C# und Webservices erst seit 2 Wochen... Sg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast eleon Geschrieben 6. Oktober 2005 Teilen Geschrieben 6. Oktober 2005 bist dir sicher dass das webservice erreichbar ist? -> port? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
werner5 Geschrieben 6. Oktober 2005 Teilen Geschrieben 6. Oktober 2005 Laut meinem Buch muss ich jetzt meinem Projekt eine Web Referenz hinzufügen(Siehe Bild 1) Funktioniert tadellos und es entstehen folgende Dateien(Bild 2) Um das Service jetzt von einem anderen Programm aus konsumieren zu können muss man eine Proxy Klasse erstellen.( Wie das im Studio geht, hab ich noch nicht herausbekommen) deshalb gebe ich den Befehl eben in der Konsole ein. Kompiliert wird mit WSDL.exe Webreferenz = Proxy ! und erstellst du im Solution Explorer mittels Web referenz hinzufügen (ist sozusagen ein Assistent welcher WSDSL ausführt und dir gleich einen c#/vb proxy erstellt und in das Projekt einbindet lg werner Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
deathhero Geschrieben 6. Oktober 2005 Autor Teilen Geschrieben 6. Oktober 2005 Webreferenz = Proxy ! und erstellst du im Solution Explorer mittels Web referenz hinzufügen (ist sozusagen ein Assistent welcher WSDSL ausführt und dir gleich einen c#/vb proxy erstellt und in das Projekt einbindet lg werner AHA das macht einmal einen Punkt klar! Ich kann es allerdings mit der Webrefernz auch nicht aufrufen... Projekt ist per Mail zu dir unterwegs...DANKE!!! steht! Und Port: hmm ja müsste eigentlich offen sein...Firwall ist auch ausgeschaltet... sg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.