2015-02-06 80 views
1

我已经继承了几年来一直处于休眠状态的WCF RIA Silverlight 4应用程序。假定代码是稳定的。为了让它工作,我需要安装没有记录的依赖关系,据我所知。名为'name'的操作不符合所需的签名。参数类型必须是实体类型或预定义的可序列化类型之一

根据我可以收集的信息安装依存关系后,我留下了以下错误。

名为'namereplaced'的操作不符合要求的 签名。参数类型必须是实体类型或 预定义的可序列化类型之一

我已经尝试按照这里推荐的方式卸载Ria服务。 WCF Ria Operation does not conform to the required signature 但这会导致更多的错误。

我也尝试追捕RIA服务工具包的特定版本的建议在这里,但没有运气 https://social.msdn.microsoft.com/Forums/silverlight/en-US/86f40859-18e8-4ce6-8d8a-a864fbe4e3ac/error-operation-named-createuser-does-not-conform-to-the-required-signature-parameter-types?forum=silverlightwcf

此外,我试图建立在IIS从客户端的FTP检索的下降,看到了在机器下面的事件日志

:服务 “/AppName/Services/SomeManager-Web-Services-ImportService.svc”不能 激活由于在编译过程中的异常。 消息的例外是:名为'namereplaced'的操作不符合 所需的签名。参数类型必须是实体或复杂类型, 是一组复杂类型或预定义的可序列化类型之一。---> System.InvalidOperationException:名为 的操作'namereplaced'不符合所需的签名。参数 类型必须是实体或复杂类型,复杂类型的集合或预定义的可序列化类型之一。

不过,使用旧的安装程序,IT团队在旧开发商的文件发现,我是能够成立的网站,不会产生这些错误的实例,但与的最新版本不兼容数据库。我没有在源代码管理中找到安装项目的源代码。

问题的方法定义如下

[Invoke(HasSideEffects=true)] 
    public void NameReplaced(IEnumerable<ImportRecord> recs) 
    { 
     foreach (var item in recs) 
     { 
      UpdateImportRecord(item); 
     } 
    } 

我非常喜欢来解决这个不试图改变代码,调查必须在客户环境上的错误做了,那么进一步更新是必需的。

编辑:马克W¯¯ 附送的建议,

public IQueryable<ImportRecord> GetImportRecords() 
     { 
      return null; 
     } 

但报道同样的生成错误。

+0

您使用的是哪个版本的Visual Studio? – OmegaMan 2015-02-07 04:23:16

+0

我正在使用VS2010。我为它专门安装了这个项目。 – recursionjm 2015-02-07 09:13:20

回答

0

我们在没有安装它的服务器上运行RIA服务。我们所做的是发布网站以复制本地=真上:

  • System.ServiceModel.DomainServices.EntityFramework
  • System.ServiceModel.DomainServices.Hosting
  • System.ServiceModel.DomainServices.Hosting.OData
  • System.ServiceModel.DomainServices.Server

如果不是它 - 由于对域名服务的魔法,服务需要自动生成的类类型。仅生成从服务返回的类型。如果域服务没有方法返回类型为ImportRecord的Iqueryable或Ienumerable,则可以创建一个返回null的方法 - 这足以让代码生成。

这些是我的第一个想法。

编辑:这看起来像我说的是什么:previously asked question

+0

我添加了一个返回null IQueryable 的方法。它仍然不会生成,并报告相同的错误。 – recursionjm 2015-02-06 21:21:06

+0

你有没有在实体上定义的密钥? – 2015-02-09 18:10:33

+0

是的,我在ImportRecord中定义了一个键。 – recursionjm 2015-02-09 20:12:13

1

由于这个项目正在复活为了某种目的,我建议您使用最新的Visual Studio,并将其移动到的Silverlight 5想到的是为什么要处理旧技术,这将会严重阻碍这一过程。

注释掉那些不起作用的事情,直到你有一个正在运行的(不可操作的)基线开始。然后带回导致问题的事情。

我说这是因为在S4 & S5中广泛使用并且坦率地说(对于代码)没有太大改变;在这个过程中,升级是会有问题的,但它们不是不可逾越的。此外,S5和更高版本的Visual Studio的安装智能变得更好。

+0

我可以理解你来自哪里。它正在复活的原因之一是排查生产中出现的问题。理想情况下,我很乐意将其他变量排除在外。 – recursionjm 2015-02-07 16:02:00

+0

我没有移动Silverlight的版本,但安装WCF Ria Services的更高版本似乎已经完成了。看来卸载/重新安装步骤的顺序有所不同,因为我安装了相同的组件组合,但之前无法构建它。 – recursionjm 2015-02-09 16:16:35

+0

@recursionjm我有一个*最近的* Silverlight项目,客户只是去了一台新机器,并被要求继续使用VS2010,这给我们带来了问题;安装顺序很奇怪。 – OmegaMan 2015-02-09 16:25:24

相关问题