我们正在尝试在没有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
答案 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。
感谢大家的回复......