gpt4 book ai didi

c# - 从外部 MVC 应用程序中的 CrmOrganizationServiceContext 获取 OrganizationServiceProxy

转载 作者:太空狗 更新时间:2023-10-29 20:30:48 25 4
gpt4 key购买 nike

我希望能够在我的手机上设置来电显示

XrmServiceContext : Microsoft.Xrm.Client.CrmOrganizationServiceContext

使用 svcutil.exe 为 crm 生成的上下文。

据我所知,我不能在现有连接上执行此操作,我需要先创建一个 OrganizationServiceProxy 实例,设置 CallerID,然后将其作为参数传递给新的 然后我可以使用 XrmServiceContext

但是,我对如何从 CrmOrganizationServiceContext 到拥有 OrganizationServiceProxy

有点困惑

程序是一个独立的.Net4.5应用

有什么有用的提示或链接吗?


编辑:发布此页面后发现此页面:http://msdn.microsoft.com/en-us/library/gg695810.aspx

所以它可能很简单:

    var connection = new CrmConnection("Xrm");
connection.CallerId = uide;
_serviceContext = new XrmServiceContext(connection);

编辑 2:事情没有那么简单。这样做不会改变我收到的数据。

    CrmConnection connection = new CrmConnection("Xrm");
connection.CallerId = Guid.NewGuid();//u.Id;

_serviceContext = new XrmServiceContext(connection);

它可以编译并且不会崩溃,但是当我使用一个权限非常低的用户的 ID 但仍然得到所有数据时我很怀疑,然后我尝试为 XrmServiceContext 的每个实例生成一个新的 Guid 但我仍然找回一切。所以我猜它没有被使用..或者我遗漏了其他东西。

编辑 3在设置了 CallerID 之后执行 WhoAmIRequest 仍然会返回在连接字符串中设置的同一用户。

编辑 4似乎我的问题与缓存有关。在我的实现中,我需要首先调用服务上下文来找出我想要模拟的用户的 Guid。此调用是在未设置 CallerID 的情况下进行的。如果我跳过这个初始查询并从一开始就设置一个特定的 Guid,CallerID 就可以工作。我猜这是因为服务上下文缓存了我原来的 CallerId 或类似的东西。

现在我只需要弄清楚如何清除 CRM 2013 SDK 中的缓存。

编辑 5通过使用本指南完全关闭缓存:http://msdn.microsoft.com/en-us/library/gg695805.aspx我已经开始工作了。但是,如果我可以在需要的时候将其清除而不是完全禁用它,我会更愿意。

如果有人可以告诉我如何使用代码清空服务上下文缓存,我会将其标记为正确的解决方案

最佳答案

有一种方法可以在处理你的“_serviceContext”时使用

您应该能够使用:_serviceContext.ClearChanges(); 这会清除缓存中特定实体的所有跟踪。 See the Public Methods Section

关于c# - 从外部 MVC 应用程序中的 CrmOrganizationServiceContext 获取 OrganizationServiceProxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com