Главная » Silverlight » Конфигурирование адреса URL веб-службы

0

При добавлении ссылки на службу в автоматически генерируемый код включает­ся ее адрес URL. Поэтому при создании экземпляра класса прокси задавать адрес URL не нужно.

Однако это создает потенциальную проблему. Все адреса URL веб-служб полностью квалифицированные. Относительные маршруты недопустимы. В рабочей среде Visual Studio используется тестовый сервер. Следовательно, позже, при попытке выполнить приложение с другим номером порта, произойдет ошибка. Поэтому при развертывании приложения на рабочем веб-сервере нужно обновить адрес URL.

Решить эту проблему можно, обновив ссылку на службу. Однако для этого нужно регенерировать весь код прокси. Существует два более простых решения.

Первое решение. Сконфигурируйте программу Visual Studio таким образом, что­бы при выполнении тестового сервера, хостирующего приложение, всегда использо­вался заданный порт. Этот способ доступен, только если приложение было создано как веб-проект. Чтобы сконфигурировать тестовый веб-сервер для проекта, дважды щелкните на пункте Properties (Свойства) в окне Solution Explorer (Проводник решений). Откройте вкладку Web. В группе Servers (Серверы) установите переключатель Specific port (Специальный порт) и введите любой номер порта. Можете ввести номер порта, ис­пользуемый тестовым сервером в данном сеансе. На рис. 15.3 задан номер порта 54752.

Рис. 15.3. Установка порта для тестового веб-сервера

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

TestServiceClient proxy = new TestServiceClient () ;

Можете явно задать порт с помощью класса EndpointAddress.

// Создание класса прокси

TestServiceClient proxy = new TestServiceClient () ;

// Использование порта, жестко закодированного в проекте EndpointAddress address = new EndpointAddress( "http://localhost:54752/ASPWebSite/TestService.svc");

/ / Применение нового адреса proxy.Endpoint.Address = address;

Второе решение. Можно также изменять адрес динамически с помощью кода, син­хронизируя его с номером порта, который в данный момент используется веб-сервером. Для этого нужно извлечь URL страницы Silverlight и найти номер ее порта (это несложно сделать, поскольку страница Silverlight хостируется тем же веб-сервером, что и служба). Ниже приведен код, выполняющий указанные операции.

// Создание нового URL для службы TestService.svc //с текущим номером порта

EndpointAddress address = new EndpointAddress("http://localhost:" + HtmlPage.Document.DocumentUri.Port + "/ASPWebSite/TestService.svc");

// Применение нового адреса в объекте прокси TestServiceClient proxy = new TestServiceClient(); proxy.Endpoint.Address = address;

Аналогичный код можно применить для создания URL на основе текущей страницы Silverlight, чтобы веб-служба была работоспособной при развертывании в любом месте. Нужно лишь, чтобы служба и приложение Silverlight находились в одной папке.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии