2010-08-18 4 views
0

Я последовал за учебник здесь: http://www.silverlight.net/learn/tutorials/sqldatagrid-cs/Silverlight не может говорить с сервисом РИА


ОТВЕТ: Когда я запустил эту вещь в отладчик, он начинал его на порт 16048. Между тем , ServiceReferences.ClientConfig имел адрес конечной точки, используя порт 15459. Не знаю, почему это произошло, но как только я изменил его, так что он обращался к службе на порту 16048, все было в порядке. Я заметил, что порты отличаются друг от друга, но предположил, что он использует другой порт для обслуживания по какой-то разумной причине. И мы все знаем, кто мы делаем задницу, когда мы предположим, что, не так ли ...

Нижняя линия: щелкните правой кнопкой по сервисному проекту в обозревателе решений, Свойства | Интернет | Конкретная Порт


В учебнике, вы создаете простой Silverlight XAP вещь, создать RIA службу в том же растворе, и вызвать службу из Silverlight. Я запускаю его в VS2010 со встроенным веб-сервером. Когда асинхронный вызов службы завершается, в _error для результата устанавливается значение System.ServiceModel.CommunicationException (см. Ниже).

Я не могу переоценить тот факт, что служба и приложение Silverlight находятся на одном компьютере, на физическом компьютере, который сидит на моем столе. Я добавил crossdomain.xml и clientaccesspolicy.xml

Учебное пособие с 2008 года, и в некоторых отношениях кажется устаревшим. Кажется, что вещь RIA удобна, но Silverlight просто не поддерживает ее? MS отказалась от WCF и/или RIA за что-то еще? Есть ли другой новый способ получить данные с сервера на Silverlight? Что такое доменная служба? Это лучше? Это последняя большая или следующая? Как никто следит?

e._error {System.ServiceModel.CommunicationException: Ошибка Ошибка при попытке сделать запрос к URI 'http://localhost:15459/Service1.svc'. Это может быть связано с попыткой получить доступ к службе в междоменном режиме без надлежащей политики междоменного домена или политики, непригодной для служб SOAP . Вам может потребоваться связаться с владельцем службы, чтобы опубликовать файл политики междоменной политики и обеспечить его отправку заголовков HTTP , связанных с SOAP. Эта ошибка также может быть вызвана использованием внутренних типов в прокси-сервере веб-службы без использования атрибута InternalsVisibleToAttribute. Для получения дополнительной информации см. Внутреннее исключение . ---> System.Security.SecurityException ---> System.Security.SecurityException: ошибка безопасности. на System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) в System.Net.Browser.BrowserHttpWebRequest. <> c__DisplayClass5.b__4 (Объект sendState) по адресу System.Net.Browser.AsyncHelper. <> c__DisplayClass2.b__0 (Объект sendState) --- Конец внутренней трассировки стека исключений --- у System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, объект состояния) на System.Net.Browser.BrowserHttpWebRequest .EndGetResponse (IAsyncResult AsyncResult) в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse (IAsyncResult результат) --- Конец внутренней трассировки стека исключений --- в системе.ServiceModel.AsyncResult.End [TAsyncResult] (IAsyncResult результат) на System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End (SendAsyncResult результат) на System.ServiceModel.Channels.ServiceChannel.EndCall (действие струнного, Object [] выходы, IAsyncResult результат) на System.ServiceModel.ClientBase 1.ChannelBase 1.EndInvoke (String имяМетода, Object [] арг, IAsyncResult результат) на SilverlightApplication1.ServiceReference1.Service1Client.Service1ClientChannel.EndGetITEM_THINGs (IAsyncResult результат) при SilverlightApplication1.ServiceReference1 .Service1Client.SilverlightApplication1.ServiceReference1.IService1.EndGetITEM_THINGs (IAsyncResult результата) на SilverlightApplication1.ServiceReference1.Service1Client.OnEndGetITEM_THINGs (IAsyncResult результата) при System.ServiceModel.ClientBase`1.OnAsyncCallCompleted (IAsyncResult результата)} System.Exception {System.ServiceModel.CommunicationException}

ответ

1

Из сообщения об ошибке я бы предположил, что ваш файл clientaccesspolicy.xml либо находится не в правильном месте (должен находиться в корневой директории службы), либо не настроен для доступа к службе. Зайдите на страницу HTTP Communication and Security with Silverlight для получения дополнительной информации о доступе к сервисам с помощью Silverlight.

Microsoft не отказалась от WCF и/или RIA.

+0

На самом деле, оказалось, что я могу полностью избавиться от clientaccesspolicy.xml. Проблема не была связана с этим. –

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