Как динамически установить имя сервера службы wcf в silverlight - PullRequest
0 голосов
/ 05 августа 2010

Мне нужно развернуть решение 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, а затем присваивается в качестве значения. В своем коде я жестко закодировал его для краткости.

Спасибо за любые предложения.

Ответы [ 2 ]

0 голосов
/ 15 августа 2010

я открыл файл xap с помощью zip, затем вручную обновил конечную точку файла servicereference.clientconfig, а затем снова заархивировал.

0 голосов
/ 12 августа 2010

После еще нескольких исследований выясняется, что в случае, когда приложение sl должно быть установлено на отдельных серверах или если необходимо, чтобы оно указывало на разные конечные точки WCF, вышеуказанный подход лучше всего работал для этого проекта.В итоге мы сохранили полное имя сервера для конечной точки в файле web.config с другими строками подключения.Затем передал это значение в параметры init, используя JSON.Затем Silverlight смог при инициализации подобрать новое имя сервера и направить приложение SL на новый сервис.

...