编程语言
首页 > 编程语言> > c# – 在没有Silverlight项目的情况下消费RIA服务

c# – 在没有Silverlight项目的情况下消费RIA服务

作者:互联网

我们有一个使用RIA服务的silverlight项目.我想在该项目和Web服务之间共享一些代码.我必须将代码保留在现在的位置,即我无法共享代码.

我认为好的是Web服务调用RIA服务.它将坐在同一台服务器上.

我去了我的Web服务项目,并为ria服务添加了服务引用.我点击了高级并选中它以“生成异步操作”的选项.

我觉得这样做会很好,但我收到了一些警告.它生成的客户端代码缺少与异步调用相关的任何实际代码,app.config也是空的.这是警告,

Warning 2   Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='CarServiceSoap']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_CarServiceSoap'] C:\Develop\DotNet\Trunk\Applications\WcfServices\CarTransmitter\CarTransmitter.Core\Service References\CarService\Reference.svcmap  1   1   CarTransmitter.Core

Warning 3   Custom tool warning: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_CarServiceSoap']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='CarService']/wsdl:port[@name='BasicHttpBinding_CarServiceSoap']   C:\Develop\DotNet\Trunk\Applications\WcfServices\CarTransmitter\CarTransmitter.Core\Service References\CarService\Reference.svcmap  1   1   CarTransmitter.Core

Warning 1   Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Referenced type 'CarData.Organisation, CarData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' with data contract name 'Organisation' in namespace 'http://schemas.datacontract.org/2004/07/CarData' cannot be used since it does not match imported DataContract. Need to exclude this type from referenced types.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='CarServiceSoap'] C:\Develop\DotNet\Trunk\Applications\WcfServices\CarTransmitter\CarTransmitter.Core\Service References\CarService\Reference.svcmap  1   1   CarTransmitter.Core

解决方法:

使用RIA服务项目选项来创建服务库.这创建了两个绑定在一起的项目(代理对象的代码gen).两者都是有效的libs(1 Silverlight和1 .Net)

将任何RIA服务客户端库链接到Silverlight应用程序.然后将.web RIA项目链接到您的托管Web应用程序(用于标准的RIA使用).您还可以将.web库作为.Net lib添加到Wcf服务中(不将其作为服务使用).

如果您没有将主Silverlight项目创建为RIA服务项目,则需要将app.config文件中的设置移动到web.config文件中.如果您已具有服务支持设置,则只需复制数据库连接字符串. Wcf项目只需要db连接字符串.

然后,您应该能够使用服务器端RIA调用(不要忘记添加您自己的submitchanges调用,因为RIA在每批更新后在幕后执行此操作),或者直接使用数据层(EF等) .

标签:c,net,silverlight,ria
来源: https://codeday.me/bug/20190710/1421597.html