powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Вызов метода WCF сервиса (вопрос из экзамена 70-562)
3 сообщений из 3, страница 1 из 1
Вызов метода WCF сервиса (вопрос из экзамена 70-562)
    #36711855
pusrg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Помогите разобраться с вызовом метода WCF сервиса с помощью XmlReader.

Готовлюсь сдавать сертификацию 70-562 и в Braindumps обнаружил вопрос по WCF сервису:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
You create a Microsoft ASP.NET application by using the Microsoft .NET Framework version  3 . 5 .
You create a Microsoft Windows Communication Foundation (WCF) service that exposes the following service contract. (Line numbers are included for reference only.) 
 01  [ServiceContract] 
 02  public interface IBlogService 
 03  { 
 04  [OperationContract] 
 05  [WebGet(ResponseFormat=WebMessageFormat.Xml)] 
 06  Rss20FeedFormatter GetBlog(); 
 07  } 
You configure the WCF service to use the WebHttpBinding class, and to be exposed at the following URL:
http://www.contoso.com/BlogService 
You need to store the result of the GetBlog operation in an XmlDocument variable named xmlBlog in a Web form.
Which code segment should you use?

Answers:
A:
string url = @"http: //www.contoso.com/BlogService/GetBlog"; 
XmlReader blogReader = XmlReader.Create(url); 
xmlBlog.Load(blogReader);

B:
string url = @"http: //www.contoso.com/BlogService"; 
XmlReader blogReader = XmlReader.Create(url); 
xmlBlog.Load(blogReader);

C:
Uri blogUri = new Uri(@"http: //www.contoso.com/BlogService"); 
ChannelFactory<IBlogService> blogFactory = new ChannelFactory<IBlogService>(blogUri); 
IBlogService blogSrv = blogFactory.CreateChannel(); 
Rss20FeedFormatter feed = blogSrv.GetBlog(); 
xmlBlog.LoadXml(feed.ToString());

D:
Uri blogUri = new Uri(@"http: //www.contoso.com/BlogService/GetBlog"); 
ChannelFactory<IBlogService> blogFactory = new ChannelFactory<IBlogService>(blogUri); 
IBlogService blogSrv = blogFactory.CreateChannel(); 
Rss20FeedFormatter feed = blogSrv.GetBlog(); 
xmlBlog.LoadXml(feed.Feed.ToString());

Судя по Braindumps, правильный ответ - А.

Я, к сожалению не имел практического опыта по WCF сервисам, в порядке подготовки прочитал несколько статей на MSDN и раздел в Training Kit.
Также создал тестовый сервер и тестовый клиент для него.

Результат моих изысканий следующий:
Ближе всего к корректному, ответ С, нужно только в конструктор ChannelFactory<IBlogService>(), вместо объекта blogUri, передать корректное название EndPoint из web.config сервиса (или вызвать другой корректный конструктор для ChannelFactory<IBlogService>). После этого пример прекрасно работает, веб метод возвращает нужный результат.

При использовании варианта А, я получаю исключение "System.Net.WebException: Удаленный сервер возвратил ошибку: (400) Недопустимый запрос." в строке
Код: plaintext
1.
XmlReader blogReader = XmlReader.Create(url);
Я пытался играться с свойствами атрибута WebGet, конкретно устанавливал UriTemplate="/GetBlog", но это к сожалению не помогло...

Помогите разобраться:
то ли это ошибка в Braindumps, то ли из за недостатка знаний я не могу корректно вызвать нужный метод веб сервиса.
Буду очень благодарен, если вышлите ссылки на документацию, о именно таком способе вызова метода веб сервиса (из варианта А).

С уважением,
Заранее спасибо за ответ и потраченное время.
...
Рейтинг: 0 / 0
Вызов метода WCF сервиса (вопрос из экзамена 70-562)
    #36712978
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pusrg,

тут ответ D.
...
Рейтинг: 0 / 0
Вызов метода WCF сервиса (вопрос из экзамена 70-562)
    #36713003
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
        Dim epAddress As New EndpointAddress("http://192.168.0.3:8000/Service/Login")
        Dim binding As BasicHttpBinding = New BasicHttpBinding()
        Dim channelFactory As IChannelFactory(Of IHandShake) = New ChannelFactory(Of IHandShake)(binding)
        Dim proxy As IHandShake = channelFactory.CreateChannel(epAddress)
        MsgBox(proxy.SendLoginQuest(New LoginRequest("md5 key")))

вот тебе пример рабочего кода.

либо А либо Д.
так как адрес точки должен быть указан до последней буквы.
http: //www.contoso.com/BlogService/GetBlog вот такой токо прокатит.
а xmlreader не подойдет,так как у него перегрузки по методу create токо для файлов на диске и потоков.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Вызов метода WCF сервиса (вопрос из экзамена 70-562)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]