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

服务器上的Silverlight RIA服务复杂类型错误,silverlight,ria,Silverlight,Ria,我们正在尝试在没有SP1的旧服务器上运行带有RIA服务SP1的Silverlight 4.0。我们将所有DLL复制到本地BIN文件夹,将Copy local设置为True,将Specific Version设置为True,但下面仍然出现“复杂类型”错误 WebHost failed to process a request. Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/7339

我们正在尝试在没有SP1的旧服务器上运行带有RIA服务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)
WebHost无法处理请求。
发件人信息:System.ServiceModel.ServiceHostingEnvironment+HostingManager/7339810
异常:System.ServiceModel.ServiceActivationException:由于编译期间出现异常,无法激活服务“/Linebacker/Services/FCSAmerica Linebacker Web DomainServices LinebackerDomainService.svc”。异常消息是:名为“SearchCustomers”的操作不符合所需的签名。返回类型必须是实体、实体集合或预定义的可序列化类型之一..-->System.InvalidOperationException:名为“SearchCustomers”的操作不符合要求的签名。返回类型必须是实体、实体集合或预定义的可序列化类型之一。
位于System.ServiceModel.DomainServices.Server.DomainServiceDescription.ValidateMethodSignature(DomainOperationEntry方法)
位于System.ServiceModel.DomainServices.Server.DomainServiceDescription.AddInvokeOperation(DomainOperationEntry方法)
位于System.ServiceModel.DomainServices.Server.DomainServiceDescription.Initialize()处
位于System.ServiceModel.DomainServices.Server.DomainServiceDescription.CreateDescription(类型domainServiceType)
在System.ServiceModel.DomainServices.Server.DomainServiceDescription.c__DisplayClass8.b__7(类型)中
位于System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey,Func`2 valueFactory)
位于System.ServiceModel.DomainServices.Server.DomainServiceDescription.GetDescription(类型domainServiceType)
位于System.ServiceModel.DomainServices.Hosting.DomainServiceHost..ctor(类型domainServiceType,Uri[]baseAddresses)
位于System.ServiceModel.DomainServices.Hosting.DomainServiceHostFactory.CreateServiceHost(类型serviceType,Uri[]baseAddresses)
位于System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(字符串构造函数字符串,Uri[]基地址)
位于System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(字符串规范化VirtualPath)
位于System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(字符串规范化VirtualPath)
位于System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(字符串规范化VirtualPath)
---内部异常堆栈跟踪的结束---
位于System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(字符串规范化VirtualPath)
位于System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(字符串相对虚拟路径)
这就是我们的代码在域服务中的样子……它是围绕WCF调用的包装,而不是实体对象

    [Invoke]
    public IEnumerable<Customer> SearchCustomers(string searchValue)
    {
        return new List<Customer>();
    }
[调用]
公共IEnumerable SearchCustomers(字符串searchValue)
{
返回新列表();
}
我们需要在主机服务器上安装SP1吗? 这会影响运行在那里的旧版本Silverlight吗? 我们是否缺少一个属性或什么

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

在我们的开发人员机器上运行良好,但在服务器上运行不好

谢谢
Qui_Jon

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

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

msiexec /i RiaServices.msi SERVER=TRUE msiexec/i RiaServices.msi SERVER=TRUE
这就是问题所在

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

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

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

因此,GAC凌驾于我们的DLL之上,我们从未引用我们的解决方案所部署的SP1 DLL

因为我们不想在我们的web服务器上安装RIA,而这是原始RIA服务的“垃圾”安装,所以我们刚刚卸载了它,然后我们部署的SP1 dll被正确引用,问题得到了解决

另一个解决方案是使用上面显示的命令行选项安装RIASP1


感谢大家的回复…

这可以让我们的IIS服务器尽可能通用,我们进行了BIN部署,因此我们不必安装和管理这些框架。我们在部署到客户系统时遇到了类似的问题,但由于RIA服务1.0仅适用于安装。我们的案例甚至更有趣,因为有些服务有效,而另一些则无效(取决于签名是否需要SP1)。似乎在系统上安装此功能将覆盖文件的bin部署,您需要卸载1.0或安装SP1。