2009-12-08 3 views
8

У меня очень простой образец приложения Silverlight. Я добавил службу домена к нему с моделью сущности, которая имеет одну сущность. Клиентское приложение просто загружает все строки в объект при запуске. Когда я запускаю это в своем окне разработки, он работает так, как ожидалось. Однако, когда я переношу его на наш тестовый сервер, я получаю исключение, говоря, что метод, который я вызываю, не может быть найден (операция загрузки не выполнена для запроса «GetCTCStation». Удаленный сервер возвратил ошибку. NotFound.). Когда я более подробно изучил связь между клиентом и сервером с Fiddler, я узнал, что запрос будет http://[server url] /ClientBin/SilverlightApplication7-Client-Web-CTCService.svc/binary. Я добавил службу домена в корень веб-проекта, поэтому я не понимаю, почему клиент ищет его в каталоге ClientBin. Очевидно, это не так. Что я здесь делаю неправильно? У меня никогда не было проблем с июльской версией предварительного просмотра RIA.Проблемы с развертыванием службы WCF RIA


Это относительный, но обрабатывается в файле Generated_Code автоматически. И нет ничего в настройке webconfig. При создании службы домена я использовал настройки по умолчанию. Я попытался явно установить uri при создании экземпляра службы и возникло такое же исключение.

ответ

9

После долгой борьбы и опробования множества различных вариантов я наконец нашел решение. Этот пост был key:

В принципе, некоторые dll не были включены в папку bin при публикации проекта. Убедитесь, что в разделе Ссылки установлено, что следующие DLL настроены правильно (убедитесь, что System.ComponentModel.DataAnnotations указывает на C: \ Program Files \ Microsoft SDK \ RIA Services \ v1.0 \ Libraries \ Server \ System.ComponentModel.DataAnnotations. dll):

System.ComponentModel.DataAnnotes и каждая dll, которая начинается с System.Web, должна иметь «Копировать локальную» в true.

Создайте проект и опубликуйте снова. Это поставило проблему для меня.

Я хотел бы поблагодарить всех, кто внес свой вклад в решение этой проблемы (в этой теме и других).

+0

Файл System.ComponentModel.DataAnnotations.dll больше не существует в этом SDK. Должны ли мы проголосовать за этот ответ? – YeahStu

+1

Я нахожусь в Silverlight 5 и Ria Services 1.0 SP2, и этот ответ по-прежнему действует. На самом деле, пожалуйста, @Dragan или любой, кто может, отметьте это как ответ. –

0

Вы проверили адресную часть своей конфигурации привязки? Похоже, что он использует относительный адрес.

1

Если вы проверяете ошибку в этом запросе на обслуживание (что нормально, как вы его видите), что говорит содержание в Fiddler? NotFound является генератором в плагине, но скрипач, скорее всего, покажет вам HTTP 500 или что-то более подробно в теле ответа.

+0

В моем случае я получаю ошибку 401. Пробовал локальный вариант копирования на все необходимые файлы, но все равно не повезло ... какие-нибудь подсказки? – Entrodus

1

1) На каких IIS вы используете deploing? Если < 7 Вы должны Hotfix

2) Включите все RIA сборки (Set Copy Local => TRUE) в том числе:

System.Web.Ria

System.Web.DomainServices. (там 4 из них в зависимости от того, что вы используете)

3) Это может быть результатом того, что ваш узел в вашем приложении ASPNET настроен на Windows, но ваш сайт настроен на Anonymous в IIS. Для большинства простое изменение узла в режим = «Формы» удалит эту ошибку и позволит продолжить.Для других, если ваша конфигурация IIS настроена на использование как встроенного Auth, так и анонимного, вы хотите снять отметку с одного из них в настройке Directory Security для сайта в консоли управления IIS.

0

WCF RIA Services VS 2008 Ошибки развертывания

Там много хороших проводок в сети и лучше один, кажется, быть here (Спасибо Тим)

Хотя все проводки, которые я нашел, были полезны в некотором роде , окончательное решение в моем случае было неправильной строкой подключения DB. Хотя VS генерироваться DB строка работала нормально в VS, я не мог развернуть его на моем QA сервере, пока я не обрезается, чтобы это было так:

add name="myEntities" connectionString="metadata=res://*/ReviewsModel.csdl|res://*/ReviewsModel.ssdl|res://*/ReviewsModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=dataSource;Initial Catalog=intitalCatalog;User ID=userID;Password=password;&quot;" providerName="System.Data.EntityClient" 
0

WCF RIA Services VS ошибки 2008 развертывания Here является решением, которое вы ищут пример загрузки и проверяют вашу собственную живую службу WCF RIA (Vs2008).

1

В моем случае решение было установить «Copy Local» Свойство следующих сборок из Ссылки сайта папку «Истина»:

System.ComponentModel.DataAnnotations 
System.ServiceModel.DomainServices.EntityFramework 
System.ServiceModel.DomainServices.Hosting 
System.ServiceModel.DomainServices.Hosting.OData 
System.ServiceModel.DomainServices.Server 
System.Web.ApplicationServices 
System.Web 
System.Web.Extensions 
System.Web.Mobile 
System.Web.Services 

Если все правильно после очередного восстановления этих сборок будут скопированы в папку бен вашего проекта.

Что хорошего в удобной конфигурации IIS 7, я не выполнял.

1

Ran в эту проблему также (RIA возвращает «Not Found»), но в моем случае оказалось, что мой запрос возвращал больше строк, чем разрешено с помощью maxitemsinobjectgraph. Моим временным разрешением было добавить .Take (5000), чтобы уменьшить набор результатов, но для постоянного разрешения требуется расширение maxitemsinobjectgraph, как указано ниже. Надеюсь, что это помогает кто-то еще ...

<behaviors>  
<behavior name="MyServiceBehavior">   
    <dataContractSerializer maxItemsInObjectGraph="3" />  
</behavior> 
</behaviors> 

Имейте в виду, что значение по умолчанию Int32.MaxValue или 2.147.483.647

MSDN - maxItemsInObjectGraph

MSDN - Int32.MaxValue

0

Для меня это было что аутентификация не была установлена ​​на «Аноним» в IIS. Я использовал Fiddler для получения сгенерированного URL-адреса RIA SCV, а затем открыл URL-адрес в браузере. Сообщение было довольно явным.

Мне просто нужно разрешить анонимный доступ, перезапустить пул приложений, и все работает как ожидалось.

1

Корпорация Майкрософт рекомендует по телефону MSDN установить на сервер Ria Services.

Рекомендуется, чтобы службы RIA были установлены на веб-сервере , на котором будет размещено ваше приложение.

Существует трюк здесь, вероятно, видел большинство людей уклоняются от этого решения. При установке по умолчанию будет указан ряд предварительных условий, которые обычно не требуется устанавливать на сервере.

Предпосылки Проверить

следующие необходимые компоненты отсутствуют:

  • Microsoft Visual Studio 2010 или более поздней версии или Visual Web Developer 2010
  • Экспресс Microsoft Silverlight 4 Разработчик выполнения или более новой версии Microsoft
  • Silverlight 4 SDK или Microsoft Silverlight 5 SDK

Запуск installation с аргументом командной строки SERVER=TRUE будет обходить эту проверку.

Msiexec/я RiaServices.msi SERVER = ИСТИНА

Я также рекомендовал бы использовать это решение, поскольку он не требует специальной настройки для конкретного набора библиотек DLL, которые могут изменяться в будущем версии. Кроме того, процесс публикации будет немного быстрее, потому что эти файлы не будут включены.

Заметим также, что вы можете использовать Web Platform Installer установить RIA Services на сервере с помощью «WCF RIA Services установки сервера для .Net Framework 4.0» который имеет тот же эффект, что и переключатель SERVER=TRUE. К сожалению, это только версия 1 и отсутствует пакет обновления 2.