Tel quel WCF ne supporte pas la création d’un point de terminaison d’un service sur une Uri relative. Tout bon codeur ASP se dira :”pas de soucis il y a toujours le context http pour nous permettre de résoudre l’Uri absolue…. oui mais voila, pas de chance, httpContext n’existe pas en Silverlight.
En cherchant dans le namespace System.Windows on fini tout de même par tombé sur DocumentUri qui permet justement de trouver l’Uri à partir de laquelle notre SilverLight est mis à disposition (ouf!).
System.Windows.Browser.HtmlPage.Document.DocumentUri.AbsoluteUri
Donc pour instancier dynamiquement un proxy pour SilverLight sur une Uri relative on peut utiliser le code suivant
Vb
Dim service As New TestSilverlight.MonProxy.MonServiceClient( _ New BasicHttpBinding(), _ New EndpointAddress( _ String.Concat( _ System.Windows.Browser.HtmlPage.Document.DocumentUri.AbsoluteUri, _ "MonService.svc")) _ )
C#
TestSilverlight.MonProxy.MonServiceClient service = new TestSilverlight.MonProxy.MonServiceClient( new BasicHttpBinding(), new EndpointAddress( String.Concat( System.Windows.Browser.HtmlPage.Document.DocumentUri.AbsoluteUri, "MonService.svc")) );