具有名称帐户的代理类型已由另一个汇编定义

问题描述 投票:0回答:6
    我们在我们的本地CRM 2011系统中有2个组织。
  • 我们已经为两个组织生成了早期的班级。
  • 我们的插件之一是抛出“一个带有名称帐户的代理类型,已由另一个汇编定义”在停用帐户时的错误。
  • 插件仅引用早期绑定的dll'S。
  • 我如何获得CRM系统来尊重这些参考的名称空间。 我尝试了从Google出现的几个项目,但没有一个工作。
由于您可以用2个香草org来重现它,我会想像一下,我们可以在代码层之外进行某些内容,而无需返回并重构2个orgs的一堆代码。 thanks,

乔恩

实际上,问题是WCF试图对服务器响应进行应对范围而无法识别正确的类型。对此问题进行排序的最佳方法是使用assembly.getExeCutingAssembly()传递当前汇编,以在创建代理时,将其传递给ProxyTypesBehavior()。

using (serviceProxy = new OrganizationServiceProxy(config.OrganizationUri, config.HomeRealmUri, config.Credentials, config.DeviceCredentials)) { // This statement is required to enable early-bound type support. serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior(Assembly.GetExecutingAssembly())); }

c# asp.net .net dynamics-crm dynamics-crm-2011
6个回答
8
投票

这应该有所帮助:

var credentials = new ClientCredentials();
credentials.Windows.ClientCredential = new System.Net.NetworkCredential(userName, password, domain);

var proxy = new OrganizationServiceProxy(new Uri(discoveryUrl), null, credentials, null);
proxy.EnableProxyTypes(typeof(CrmServiceContext).Assembly);

var context = CrmServiceContext(proxy);

4
投票
solution,但是CRMConnection仅在客户端SDK中可用,这意味着您不能以这种方式实例化“ Server-Organizationserviceproxy”。启用二型(组件组装)都适用于双方。

希望这帮助

mh

自这个问题已经提出以来,也许几年了。但是,我最近遇到了这个问题,并且非常担心要更改成千上万的代码行。但是,我很幸运能找到以下简单的更改,以使自己摆脱地狱:

支持您要处理的两个上下文对象:

andansionserviceContext对象:上下文1

acrmsvcutil上下文对象:上下文2


1
投票

如果在单个方法中,您可以使用相同的服务对象进行多个CRUD操作,但是使用上述示例的上下文对象,则很可能会增加此错误。但是,通过执行以下操作,您可以防止它发生。

您想使用Context1的每一个时间,都在上下文对象之前使用服务对象进行以下操作:

service.EnableProxyTypes(typeof(OrganizationServiceContext).Assembly); using (var context1 = new OrganizationServiceContext(_service)){ // your classic code here }
  1. ,同时,每当您想使用Context2时,您都会遵循相同的结构:
  2. service.EnableProxyTypes(typeof(HiwebContext).Assembly); using (var context = new XYZContext(this._service)){ // your CrmSvcUtil none-classic code here }

通常意味着有一个或多个带有相同方法名称或属性来修复此程序的组件使用程序集的完全合格名称。例如,在使用system.io中在与system.io冲突的类代码中。。。 thisobject.system.io..path(-----)=例如。

I发现添加汇编。getExeCutingAssembly()解决了问题。

添加gassebly.getExeCutingAssembly()解决我的问题,您还需要添加

using System.Reflection;

thanks

0
投票
使用OpenAPI和新的Dataverse Client(ServiceClient)时,也会在.net6上发生。 我发现的唯一修复程序是克隆设置的服务,并使用汇编参考:

ServiceClient serviceClient = new ServiceClient(new Uri(Environment.GetEnvironmentVariable("DataverseUrl")), Environment.GetEnvironmentVariable("DataverseClientId"), Environment.GetEnvironmentVariable("DataverseSecret"), false, log); ServiceClient service = serviceClient.Clone(Assembly.GetExecutingAssembly(), log);

0
投票

.net9中的我遇到了同样的问题。 根据我尝试创建服务的何时何地,它要么起作用。

例如,如果我在program.cs中创建服务客户端时,当应用程序启动时,它将起作用,我可以将whoami api称为良好。

0
投票
当前类型和现有类型完全相同,所以我不知道这里发生了什么。

Microsoft.PowerPlatform.Dataverse.Client.Utils.DataverseConnectionException: Failed to Clone Connection ---> Microsoft.PowerPlatform.Dataverse.Client.Utils.DataverseOperationException: Failed constructing cloned connection. debugstate=1 ---> Microsoft.PowerPlatform.Dataverse.Client.Utils.DataverseOperationException: Exception - Failed to lookup current user ---> System.ArgumentException: A proxy type with the name account has been defined by another assembly. Current type: Integrations.Dynamics365.Entities.Account, Integrations, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, Existing type: Integrations.Dynamics365.Entities.Account, Integrations, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (Parameter 'account') at Microsoft.PowerPlatform.Dataverse.Client.ServiceClient.Execute(OrganizationRequest request)

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.