WCF Service auf Somee.com

Vor ein paar Monaten habe ich einen kleinen Artikel über Webhosting mit Somee geschrieben und heute einen Kommentar dazu bekommen. Da ich ja nicht besonders viele richtige Kommentare kriege (die traurige Bilanz steht bei 1270 Spam Kommentaren, ein Glück, dass ich jetzt den Spam-Filter hab, sonst wäre wahrscheinlich mein Hotmail Account von den ganzen Benachrichtigungen übergelaufen, und 16 Genehmigten wovon über die Hälfte Trackbacks von mir selber sind), hab ich kein Problem damit mal einen Freitag Abend dafür zu nehmen.

Also, Marek will ein praktisches Beispiel, zu Befehl, los gehts:

Wir melden uns bei somee.com an (s. der verlinkte Artikel von oben).

Wenn alles geklappt hat, müssen wir noch ein paar Parameter für unsere neue Seite einstellen, interessant ist eigentlich nur die Asp.Net Version. Ich nehme jetzt mal an Marek programmiert mit dem Net Framework 4.0, also mach ich das so.image

Dann sind wir soweit und können Visual Studio aufmachen. Ich will Marek nicht gleich mit einer komplizierten WCF-Implementierung über den Haufen rennen also nehmen wir denke ich einfach das Template von Visual Studio für eine WCF Service Application

image

Sollte dann ungefähr so aussehen:

image

Wir lassen den Service also einfach genau so, wie er ist und veröffentlichen ihn auf unserer Website über das Publish Menü von Visual Studio (man kann die Dateien natürlich auch so hochkopieren).

image

Wichtig ist hier die Sache mit der FTP-Adresse, die bei somee immer noch mal ein “www.xxx.somee.com” hintendran braucht, bei mir wäre also die komplette Adresse ftp://selensoft.somee.com/www.selensoft.somee.com/.

Wir schauen nochmal über die Metadaten-Adresse nach ob alles geklappt hat:

image

Und jetzt schreiben wir noch eine kleine Test-Console. Neues Konsolenprojekt, Referenz auf System.ServiceModel und die Service-Dll hinzufügen, App Config hinzufügen.

Die Config ist ganz einfach, ein Endpoint mit unserer Service-Adresse, dem Contract aus der referenzierten Service Dll und dem Binding, was (weil ja Standard) das basicHttpBinding ist:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <system.serviceModel>
 <client>
 <endpoint name="TestService"
 binding="basicHttpBinding"
 address="http://selensoft.somee.com/Service1.svc"
 contract="WcfOnSomee.IService1"/>
 </client>
 </system.serviceModel>
</configuration>

 

Dann können wir diesen Endpoint mit einer einfachen DuplexFactory benutzen (Program Klasse):

static void Main(string[] args)
{
 IService1 proxy = new ChannelFactory<IService1>("TestService").CreateChannel();
 Console.WriteLine(proxy.GetData(123));
 (proxy as ICommunicationObject).Close();
 Console.ReadLine();
}

Und das war´s auch schon, es funktioniert!

image

PS: Wenn es nicht funktioniert oder ich etwas vergessen habe: Unbedingt Kommentar schreiben ;)