ASP.net在服务引用之间重用类型

时间:2017-03-08 21:39:20

标签: c# asp.net acumatica

我有两个服务引用,我通过为每个引入一个WSDL导入到我的asp.net项目中。第一个引用是我的Web服务(Acumatica)的默认引用,第二个引用是我在原始Web服务中创建的自定义端点服务。

问题是他们都使用相同的基本类型"在它们的对象类中,所以当我在我的代码中包含两个名称空间以使用它们中的两个对象时,我得到一个错误,说两个名称空间中的基类型之间存在模糊引用。说得通。但是我如何设置它以便.net知道重用两个命名空间之间的基类型,因为它们完全相同?

显示我在说什么:

enter image description here enter image description here

您可以看到引用之间的类型完全相同。我是否可以配置这些引用以在这两个引用之间重用这些类型以消除我的模糊引用错误?

2 个答案:

答案 0 :(得分:4)

不幸的是,没有办法达到你想要的效果。

问题是,使用的基类是不一样(它们具有不同的属性,导致不同的XML(反)序列化)。为了增加对伤害的侮辱,当我们研究这个问题时,我们发现你用来生成客户端代码does not support reuse when XMLSerializer is used的WCF客户端实用程序,所以即使Acumatica使基类完全相同,仍然不会在客户端重复使用。

但为什么你需要同时使用不同的端点?如果您自己的端点仅向Acumatica的Default添加功能,为什么不考虑扩展Default?这样,您的代码中只需要一个端点。

答案 1 :(得分:2)

创建一个类库(例如“MySharedContracts”),您可以在其中放置要在Web服务中使用的所有类型。您可以在Web服务项目和使用Web服务的ASP.net项目中引用相同的类库。

然后,在导入WDSL定义的ASP.net项目中,单击“高级”以打开“服务引用设置”对话框。在此处,启用“在引用程序集中重用类型”。然后,您可以通过选择“在所有引用程序集中重用类型”来让VS自己搜索拟合类型,或者指定一组要为Web服务使用类型的程序集。

Service Reference Settings