Advanced Services | Web Services 3 |
Wie im ersten Beispiel legen wir wieder eine Web Service Application an. Diesmal jedoch wollen wir etwas anspruchsvollere Methoden einsetzen.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Globalization; namespace WebService2 { /// <summary> /// Summary description for Service1 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); [WebMethod] // signals that this method is a Service Operation public String GetServerTime(String culture) { if (culture.Equals("ge")) return DateTime.Now.ToString(new CultureInfo("de-DE")); return DateTime.Now.ToString(new CultureInfo("en-GB")); } [WebMethod] // signals that this method is a Service Operation public long GetUnixTime() { return (long)(DateTime.UtcNow - UnixEpoch).TotalMilliseconds; } } }
Der Methode GetServerTime() kann man einen String übergeben, über den man eine länderspezifische Ausgabe der Serverzeit erhält. Der Einfachheit halber gibt es nurf drei verschiedene Ländereinstellungen. Die zweite Methode liefert die Zeit in Sekunden seit dem 01.01.1970, die sog. Unixzeit.
Im Gegensatz zum ersten Beispiel wollen wir jetzt den Port für unseren WebServer selbst bestimmen.Über das Kontextmenü gehen wir auf den Eintrag Properties und erhalten den folgenden Dialog.
Wir tragen als Port 1789 ein.
Wie im ersten Beispiel läßt sich der Server problemlos starten.
Der Client wird wie im ersten Beispiel angelegt.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Globalization; using WebServiceConsoleClient2.localhost; namespace WebServiceConsoleClient2 { class Program { static void Main(string[] args) { //string datum = DateTime.Now.ToString(new CultureInfo("de-DE")); //Console.WriteLine(datum); try { Service2 service2 = new Service2(); string result = service2.GetServerTime("de"); Console.WriteLine(result); result = service2.GetServerTime("en"); Console.WriteLine(result); long lo = service2.GetUnixTime(); Console.WriteLine(lo); } catch (System.Net.WebException ex) { Console.WriteLine("System.Net.WebException:: Verbindung zum Server kann nicht hergestellt werden."); } catch (Exception ex) { Console.WriteLine(ex); } } } }