2010-08-04 5 views
0

Мне нужно развернуть silverlight 4, где он использует данные из службы WCF. Проблема в том, что это будет производственная установка, и поэтому у меня нет способа контролировать имя сервера службы, а приложение с серебряным светом не будет установлено на том же сервере, что и WCF.Как динамически установить имя сервера службы wcf в silverlight

Запуск по этому пути, вот что я придумал до сих пор:

Я должен передать имя сервера Teh 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"];

, а затем каждый раз, когда я запрашиваю службу я установить адрес, чтобы переопределить, что по умолчанию в файле сервис refernece.config

QueryClient selAct = new QueryClient("BasicHttpBinding_IQuery"); 
      selAct.Endpoint.Address = new System.ServiceModel.EndpointAddress(dswconnection); 

Мой вопрос ... это лучший подход или есть другой способ динамически идентифицировать имя сервера службы, когда вы не знаете, что это за имя сервера. Это ключевой момент, когда я не могу использовать некоторые функции для определения имени или адреса хоста в канале, поскольку приложение silverlight будет находиться на другом хосте, чем WCF.

В настоящее время значение, переданное initparams, сохраняется в файле конфигурации, который считывается javascript, а затем присваивается как значение. В моем коде здесь я жестко закодировал его для краткости.

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

ответ

0

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

0

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

+0

Спасибо Fresky, задача, с которой мы столкнулись здесь, заключалась в том, что это приложение нужно было развернуть на нескольких сайтах. Вместо того, чтобы вручную редактировать каждый файл xap при установке, мы хотели пойти с чем-то большим по строкам файла конфигурации, где имя сервера можно было настроить при установке, а не вручную касаться каждого xap-файла после isntall. – rlcrews

Смежные вопросы