服务器上的Silverlight RIA服务复杂类型错误

时间:2011-08-16 19:59:06

标签: silverlight ria

我们正在尝试在没有SP1的旧服务器上运行带有RIA Services SP1的Silverlight 4.0。我们将所有DLL复制到本地BIN文件夹,将Copy Local设置为True并将Specific Version设置为True,但我们仍然在下面收到“复杂类型”错误。

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调用的包装器而不是实体对象。

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

我们是否需要在主机服务器上安装SP1? 这会影响在那里运行的旧版Silverlight吗? 我们是否缺少某个属性?

我们基本上将每个dll本地复制到hosts bin文件夹,并在我们的开发机器上的库文件夹中引用它们。

在我们的开发人员计算机上运行良好但在服务器上没有。

由于 Qui_Jon

2 个答案:

答案 0 :(得分:2)

在尝试在没有安装WCF RIA Services 1.0 SP1的服务器上使用ComplexObjects的WCF RIA服务时,我遇到了同样的问题。对您的问题的简短回答是,您需要在服务器上安装WCF RIA Services V1.0 SP1。它不应该影响在那里运行的任何其他东西。

运行安装程序时,可能会抱怨它无法找到Visual Studio。如果是,请退出安装程序,打开命令提示符,切换到包含RiaServices.msi安装程序的目录并运行以下命令:

msiexec /i RiaServices.msi SERVER=TRUE

答案 1 :(得分:1)

所以这就是问题所在。

我们已经构建并使用RIA运行复杂类型,而我们的本地开发机器上没有RIA SP1的问题。

我们的部署包装了所有这些DLL并将它们部署到我们的开发Web服务器上的IIS,然后我们得到了一个错误,它必须是像Entity一样受支持的类型。

因此,我们在Deveopment服务器上查看了GAC,并安装了RIA的旧版本,并且在GAC中,它与SP1在我们的IIS安装中部署的版本相同。

因此,GAC覆盖了我们的DLL,我们从未参考过使用我们的解决方案部署的SP1 dll。

由于我们不想在我们的网络服务器上安装RIA,这是原始RIA服务的“垃圾”安装,我们刚卸载它,然后我们部署的SP1 dll被正确引用,问题得到解决。

OTHER解决方案是使用上面显示的命令行选项安装RIA SP1。

感谢大家的回复......