Использование классов Webservice в Silverlight при добавлении ссылки на службу вместо веб-ссылки - PullRequest
0 голосов
/ 21 октября 2009

Сценарий:

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

Дизайн:

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

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

Веб-ссылка v / s Сервисная ссылка:

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

Проблема

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

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

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

Ответы [ 2 ]

2 голосов
/ 21 октября 2009

Вы звучите ужасно смущенно о некоторых понятиях.

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

1 голос
/ 21 октября 2009

Что такое веб-ссылка в 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!

...