Мне нужно развернуть решение Silverlight 4, где оно использует данные из службы WCF. Проблема в том, что это будет производственная установка, и поэтому у меня нет возможности контролировать имя сервера службы, и приложение silver light не будет установлено на тот же сервер, что и WCF.
Начиная с этого пути, я пришел к следующему:
Я должен передать имя сервера WCF моему приложению silverligth через initParams.
в файле aspx у меня
<param name="initparams" value="servicepoint=http://myservice" />
затем в app.xaml.cs
Я называю парам:
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage(e.InitParams); //pass parameter from html direclty to main page
}
Я назвал это при запуске приложения, чтобы параметр был в рамках всего приложения.
Теперь на главной странице я присваиваю этот параметр переменной
dswconnection = initParams["servicepoint"];
и затем каждый раз, когда я запрашиваю службу, я устанавливаю адрес для переопределения того, что по умолчанию находится в файле refenece.config службы
QueryClient selAct = new QueryClient("BasicHttpBinding_IQuery");
selAct.Endpoint.Address = new System.ServiceModel.EndpointAddress(dswconnection);
Мой вопрос ... это лучший подход или есть другой способ динамически идентифицировать имя сервера службы, когда вы не знаете, каким может быть это имя сервера. Это ключевой момент: я не могу использовать некоторые функции для определения имени хоста или адреса в пределах ChannelFactory, поскольку приложение Silverlight будет находиться на другом хосте, чем WCF.
Прямо сейчас значение, которое передается в initparams, сохраняется в файле конфигурации, который читается javascript, а затем присваивается в качестве значения. В своем коде я жестко закодировал его для краткости.
Спасибо за любые предложения.