Ci possono essere modi migliori, che sono aperto a utilizzare, ma questo funziona per me ed è flessibile.
Nell'applicazione Web Web.config, aggiungere una variabile in AppSettings e memorizzare l'URL di base, notare che non sto memorizzando il percorso del file SVC, lo aggiungerò successivamente. Questo perché ho più SVC di solito. Puoi scegliere di farlo in modo diverso.
<appSettings>
<add key="ServiceURI" value="http://localhost:64457/"/>
</appSettings>
Nella mia pagina Web Web Application, aggiungere un parametro chiamato InitParms, questo consente di aggiungere un elenco di chiave, i valori di coppia (separati da virgola che saranno letti dal file XAP)
<div id="silverlightControlHost">
<object data="data:application/x-silverlight," type="application/x-silverlight-2"
width="100%" height="100%" ID="Xaml1" >
<param name="InitParams" value="ServiceURI=<%= ConfigurationManager.AppSettings("ServiceURI") %>" />
nel Silverlight App.xaml.vb, caricare tutti i InitParms in una risorsa o dove mai volete
Private Sub Application_Startup(ByVal o As Object, ByVal e As StartupEventArgs) Handles Me.Startup
If e.InitParams IsNot Nothing Then
For Each k As Generic.KeyValuePair(Of String, String) In e.InitParams
Me.Resources.Add(k.Key, k.Value)
Next
End If
Poi in nessuna delle mie file XAML posso inizializzare il servizio con l'URI configurato, ho am etodo come questo
Private Sub InitializeService()
Dim uri As String = App.Current.Resources("ServiceURI")
If uri Is Nothing OrElse uri = String.Empty Then
'if there is no value added in the web.config, I can fallback to default values
_client = New ServiceClient
Else
'Notice I hardcoded the location of the SVC files in the client and append there here, you may choose not to do this
Dim uri_withservice As String = uri & "svc/secure/Service.svc"
_client = New ServiceClient("CustomBinding_Service", New EndpointAddress(uri_withservice))
End If
End Sub
Questa soluzione è la migliore per quanto mi riguarda. Qualsiasi altra soluzione hardcoded non funziona per me. – helios456