Silverlight не может общаться со службой RIA - PullRequest
0 голосов
/ 18 августа 2010

Я следовал этому уроку здесь: http://www.silverlight.net/learn/tutorials/sqldatagrid-cs/


ОТВЕТ : Когда я запускал эту штуку в отладчике, он запускал ее на порту 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.Async______0).--- Конец внутренней трассировки стека исключений --- в System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, состояние объекта) в System.Net.Browser.BrowserHttpWebRequest.EndGetResponse (IAsyncResult asyncResult) в System.Services.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse (результат IAsyncResult) --- Конец внутренней трассировки стека исключений --- в System.ServiceModel.AsyncResult.End [TAsyncResult.ServiceShannelShannelShans.SynC.(Результат SendAsyncResult) в System.ServiceModel.Channels.ServiceChannel.EndCall (действие String, Object [] outs, результат IAsyncResult) в System.ServiceModel.ClientBase 1.ChannelBase 1.EndInvoke (String methodName, 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 Ответ

1 голос
/ 18 августа 2010

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

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

...