Использование классов Webservice в Silverlight при добавлении ссылки на сервис вместо веб-ссылки

StackOverflow https://stackoverflow.com/questions/1600343

Вопрос

Сценарий:

Я использую Silverlight 3.0 в качестве клиента для веб-сервиса.

Дизайн:

На сервере есть класс с именем Информационный сервис устройств который обладает базовой функциональностью получения списка устройств, получения свойств устройств и т.д.

Когда я открываю проект ASP.NET и пытаюсь добавить веб-ссылку, я могу найти опцию добавления "Веб-ссылки".После того, как я добавлю веб-ссылку таким образом, я смогу получить доступ к классу DeviceInfoService, создав его объект, а затем обратившись к его методам.

Веб-справочник v/s Service Reference:

Приезжаю в Сильверлайт:когда я пытаюсь добавить ссылку на службу, нет возможности добавить веб-ссылку.Перейдя по ссылке на сервис, все работает нормально до тех пор, пока не будет загружен файл WSDL.Люди говорят, что я могу получить эту опцию, вернувшись к .NET 2.0, но, вероятно, Silverlight не будет работать в .NET 2.0

В чем проблема

Теперь, когда я пытаюсь получить доступ к классу DeviceInfoService , я не могу его найти.Все, что я получаю, это интерфейсы - DeviceInfoServiceSoap и DeviceInfoServiceSoapChannel.Классы с именами DeviceInfoServiceSoapClient.

Методы GetHostedDevices и GetDeviceInfo больше недоступны.Все, что я получаю, это GetDeviceInfoRequest, GetDeviceInfoRequestBody, GetDeviceInfoResponse и GetDeviceInfoResponseBody.

Я много гуглил, как использовать эти четыре класса, но ничего не нашел.Я хочу получить эти 2 класса напрямую, как в ASP.NET, и не использовать этот тип ответа на запрос.

Это было полезно?

Решение

Что такое веб-ссылка в ASP.NET эквивалентно ссылке на сервис в Silverlight.

Вот пример того, как использовать веб-сервис в Silverlight, напримертот самый Фильтр Ненормативной лексики CDYNE.

Добавьте новую ссылку на сервис в свой проект, URL-адрес: http://ws.cdyne.com/ProfanityWS/Profanity.asmx?wsdl, оставьте имя как ServiceReference1.

Используйте этот код для вызова службы (которая была реализована как асинхронная).:

public MainPage()
{
    InitializeComponent();

    string badText = "I wonder if the filter will filter this out: shit bad luck";
    ServiceReference1.ProfanitySoapClient client = new ServiceReference1.ProfanitySoapClient();
    client.ProfanityFilterCompleted += new EventHandler<ServiceReference1.ProfanityFilterCompletedEventArgs>(client_ProfanityFilterCompleted);
    client.ProfanityFilterAsync(badText, 0, false);            
}

void client_ProfanityFilterCompleted(object sender, ServiceReference1.ProfanityFilterCompletedEventArgs e)
{
    string cleanText = e.Result.CleanText;  // Web service callback is here
}

И у вас есть веб-сервис, запущенный в Silverlight!

Другие советы

Похоже, вы ужасно путаетесь в некоторых понятиях.

Как насчет того, чтобы посмотреть следующее видео Silverlight.Net и посмотреть, поможет ли это?Как использовать WCF и ASP.NET Веб-сервисы в Silverlight

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top