Ошибка комплексного типа служб Silverlight RIA на сервере - PullRequest
1 голос
/ 16 августа 2011

Мы пытаемся запустить Silverlight 4.0 с RIA Services SP1 на старом сервере без SP1.Мы скопировали всю библиотеку DLL в локальную папку BIN, для параметра «Копировать локально» задано значение «Истина», а для определенной версии задано значение «Истина», однако мы по-прежнему получаем ошибку «сложного типа» ниже.

WebHost failed to process a request.
 Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/7339810
 Exception: System.ServiceModel.ServiceActivationException: The service '/Linebacker/Services/FCSAmerica-Linebacker-Web-DomainServices-LinebackerDomainService.svc' cannot be activated due to an exception during compilation.  The exception message is: Operation named 'SearchCustomers' does not conform to the required signature. Return types must be an entity, collection of entities, or one of the predefined serializable types.. ---> System.InvalidOperationException: Operation named 'SearchCustomers' does not conform to the required signature. Return types must be an entity, collection of entities, or one of the predefined serializable types.
   at System.ServiceModel.DomainServices.Server.DomainServiceDescription.ValidateMethodSignature(DomainOperationEntry method)
   at System.ServiceModel.DomainServices.Server.DomainServiceDescription.AddInvokeOperation(DomainOperationEntry method)
   at System.ServiceModel.DomainServices.Server.DomainServiceDescription.Initialize()
   at System.ServiceModel.DomainServices.Server.DomainServiceDescription.CreateDescription(Type domainServiceType)
   at System.ServiceModel.DomainServices.Server.DomainServiceDescription.<>c__DisplayClass8.<GetDescription>b__7(Type type)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at System.ServiceModel.DomainServices.Server.DomainServiceDescription.GetDescription(Type domainServiceType)
   at System.ServiceModel.DomainServices.Hosting.DomainServiceHost..ctor(Type domainServiceType, Uri[] baseAddresses)
   at System.ServiceModel.DomainServices.Hosting.DomainServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses)
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)
   --- End of inner exception stack trace ---
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath)

Вот чтонаш код выглядит как в доменной службе ... это оболочка для вызова WCF, а не объект Entity.

    [Invoke]
    public IEnumerable<Customer> SearchCustomers(string searchValue)
    {
        return new List<Customer>();
    }

Нужно ли устанавливать SP1 на хост-сервере?Повлияет ли это на старые версии Silverlight, которые там работают?Нам не хватает атрибута или чего-то еще?

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

На наших машинах-разработчиках все в порядке, но не на сервере.

Спасибо, Qui_Jon

Ответы [ 2 ]

2 голосов
/ 17 августа 2011

У меня была такая же проблема при попытке использовать Службу RIA WCF с использованием ComplexObjects на сервере, на котором не было установлено Служба WCF RIA Services 1.0 SP1.Короткий ответ на ваш вопрос: да, вам потребуется , чтобы установить WCF RIA Services V1.0 SP1 на сервере.Это не должно влиять на что-либо еще, работающее там.

Когда вы запускаете установщик, он может жаловаться, что не может найти Visual Studio.Если это так, выйдите из установщика, откройте командную строку, перейдите в каталог, содержащий установщик RiaServices.msi, и выполните следующую команду:

msiexec /i RiaServices.msi SERVER=TRUE
1 голос
/ 18 августа 2011

Итак, вот в чем проблема.

Мы создали и работали с комплексными типами с помощью RIA без каких-либо проблем на наших локальных машинах разработки с RIA SP1.

Наше развертывание обернуло все эти DLL и развернуло их в IIS на нашем веб-сервере разработки, а затем мы получили ошибку, что это должен быть поддерживаемый тип, такой как Entity.

Итак, мы посмотрели вGAC на Deveopment Server и старой версии RIA был установлен и в GAC, и он имеет ту же версию, что и SP1, которые были развернуты с нашей установкой IIS.

Таким образом, GAC перекрывал нашу DLLи мы никогда не ссылались на библиотеки dll SP1, которые были развернуты с нашим решением.

Так как нам НЕ НУЖНО устанавливать RIA на наши веб-серверы, и это была «ненужная» установка исходных RIA Services, которые мы только что удалилиэто и затем наш развернутый dll SP1 были правильно указаны, и проблема была исправлена.

ДРУГОЕ решение было бы установить RIA SP1 с параметрами командной строки, показанными выше.

Спасибо за ответвсе ...

...