Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > WPF и Silverlight > Silverlight и Web Services |
Автор: RuBoris 20.1.2009, 12:16 | ||||||
Всем добрый день! Получаю ошибки при использоваии Web service из Silverlight. Даже самый просто код, создаю вэб службу по умолчанию с таким методом
А в моем Silverlight проекте добавляю ссылку на эту службу и при клике на одну кнопку делаю так:
Ошибку получаю в коде, который создается автоматически (файл Reference.cs):
Код ошибки такой: An error occurred while trying to make a request to URI 'http://localhost:1563/SimpleWebService/Service.asmx'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. Please see the inner exception for more details. Пожалуйста, поделитесь у кого есть какие соображения. Спасибо. ЗЫ: Вэб служба сама по себе работает нормально, проверял из консольного приложения. |
Автор: Gelis 20.1.2009, 13:53 |
В свойствах проекта для веб сервиса поставь порт как статический и перебилдь проект. Должно помочь. Если не поможет, то: http://silverlightuk.blogspot.com/2008/02/silverlight-2-and-flash-cross-domain.html |
Автор: RuBoris 20.1.2009, 15:03 |
переход на статический порт не помог. а вот с настройками cross-domain-policy я что-то не понял...как их использовать. Создаю в корневом каталоге вэб сервиса файл crossdomain.xml с таким содержимым <?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy> этого должно быть достаточно?...на стороне silverlight что-нибудь надо делать? сейчас ошибка та же самая, что я делаю не так? |
Автор: Gelis 20.1.2009, 21:22 |
Мне в свое время с такой же ошибкой помогла установка порта статическим :( |
Автор: RuBoris 23.1.2009, 11:08 |
Хэлп ми плиз!!!! Нужно настроить позарез cross-domain-policy. Всего один файл нужно настроить небольшой как я понимаю, а ничего не работает! |
Автор: likegift 30.1.2009, 21:43 |
была такая проблема, 2 дня ковырялся. если все еще не работает, то могу в архивах покапаться |
Автор: RuBoris 9.2.2009, 17:01 |
Нет, проблему я так и не решил. Но покопавшись в настройках IIS сейчас хотя бы изменилось то, что можно обращаться из SL к вэбслужбе, но только если SL проект запущен в VS, а если запустить отдельно тестовую страницу для SL объекта, то ошибка по-прежнему такая: ------------------------ System.ServiceModel.CommunicationException: An error occurred while trying to make a request to URI 'http://192.168.0.1/MyService/MyService.asmx'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. Please see the inner exception for more details. ---> System.Security.SecurityException ---> System.Security.SecurityException: Security error. at System.Net.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) at System.Net.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState) at System.Net.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState) --- End of inner exception stack trace --- at System.Net.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state) at System.Net.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result) --- End of inner exception stack trace --- at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result) at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result) at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result) at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result) at MyComp.MyService.MyServiceSoapClient.MyServiceSoapClientChannel.EndGetDynamicParams(IAsyncResult result) at MyComp.MyService.MyServiceSoapClient.MyComp.MyService.MyServiceSoap.EndGetDynamicParams(IAsyncResult result) at MyComp.MyService.MyServiceSoapClient.OnEndGetDynamicParams(IAsyncResult result) at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result) ------------------------ Что могу делать не так, или делаю что не надо? |
Автор: likegift 11.2.2009, 06:54 | ||||
попробуй обращаться к сервису из кода сильвера вот таким образом:
а то ты когда деплоишь проект, у тебя теряется путь до сервиса, поэтому ИИС начинает гнать про кроссдомен. и это.. используй wcf - сервис вместо web - сервиса. |
Автор: RuBoris 11.2.2009, 15:07 |
объясните пожалуйста, что такое "BasicHttpBinding_Service1" (параметр endpointConfigurationName) в мсдн немногосложно (((((: The name of the endpoint in the application configuration file. а также: Use this constructor (ClientBase(string endpointConfigurationName,string remoteAddress)) to determine the target endpoint information from the name of the endpoint in an application configuration file (The target value is located by finding the name attribute of the client <endpoint> element) and the specified address. |
Автор: likegift 11.2.2009, 20:46 |
ну давай по шагам. исходники примера кинул http://ifolder.ru/10509039![]() открываем 8ую студию. создаем новый проект TestSilver. ![]() удаляем лишние файлы, а тестовую страницу переменовываем в TestPage. ![]() добавляем в TestSilverWeb наш новый сервис. ![]() обзываем его Service1. на всякий случай компилириуем ![]() и добавляем в сирвилат. ![]() здесь жмем кнопку Discover, система находит наш единственный сервис. мы жмем на него, обзываем, к примеру, ServiceReference и кликаем на кнопку ОК. ![]() далее, открываешь файл ServiceReferences.ClientConfig и правишь ссылку. красным я подчеркнул имя, которым мы назовем нашу папку на веб сервере при публикации. ребилдим наш солюшн и публикуем ![]() публикуем наш проект на веб сервер и пробуем запустить отдельно наш Сервис. пока не запустится -дальшу лезть бесполезно, потому проверяем включена ли анонимная авторизация на сервере для нашего веб-приложения MyServiceTest, а так же проверяем работает ли наш пул. ![]() если все хорошо, то появляется примерно вот такое окно, после запуска сервиса ![]() дальше самое приятное. если все хорошо, то запускаем нашу тестовую страницу и жмем кнопку. |
Автор: RuBoris 13.2.2009, 15:06 |
спасибо |
Автор: likegift 13.2.2009, 21:11 | ||
заработало? |
Автор: RuBoris 17.2.2009, 18:19 |
да больше я не запускаю тестовую локальную html страницу, а запрашиваю SL объект с web-сервера) |
Автор: astikk 21.2.2010, 18:39 |
Привет! всем, сразу прошу прощения если немножко ошибся топиком, для размещения темы есть вопрос такого характера: я использую связку Silverlight + .RIA есть бд на серверной стороне. для неё делаю DomainEntityModel. выбираю базу. таблицы. все как надо далее создаю DomainEntityClass под мою модель данных. проблема заключается в том что: после сборки приложения в сгеренированном классе на стороне клиента =( у меня отсутствуют методы для работы с моделью =( что я не так сделал? ![]() |
Автор: Tishka88 2.10.2010, 08:28 |
Всем доброго дня!!!...та же самая проблема, что у ТС...как можно ее решить, если использовать все таки web service, а не WCF Service???... ![]() |
Автор: jonie 2.10.2010, 12:12 |
Снял видео (аттач есть архив 7z), не понимаю в чем проблема... кросдоменная политика нужна только если у вас сервис и силверлайт находятся в разных доменах, подробнее гуглите про "Access-Control-Allow-Origin" поле в HTTP протоколе |
Автор: Tishka88 4.10.2010, 08:14 | ||
а нельзя видео вложить в другом формате,а то не установлен конвертор и нет возможности его скачать... |
Автор: Tishka88 4.10.2010, 16:44 |
ну что не подскажет что ли никто???...уже замучался с этой херней...объясните на пальцах, как создавать Silverlight Apllication с web сервисом и его публиковать...если можно подробнее о настройках для сервиса, настройах междоменных политик... |