Mar*_*cos 5 c# microsoft-dynamics dynamics-crm dynamics-crm-online dynamics-crm-365
最新的Dynamics SDK的缓存行为使我发疯。
首先,如果要使用CrmServiceClient访问不同的环境,则必须使用RequireNewInstance=True;连接字符串中的参数。如果不是,即使您创建实例并将其部署到不同的环境,每个CrmServiceClient实例都将使用相同的连接。
现在,即使您RequireNewInstance=True;在连接字符串中使用,我也发现在某些情况下仍会发生缓存。
var client1 = new CrmServiceClient("RequireNewInstance=True;
Url=https://myCompany.crm.dynamics.com;
Username=myUser@myCompany.onmicrosoft.com; Password=myPassowrd;
AuthType=Office365");
//Now, client 2 points to a url that doesn’t exists:
var client2 = new CrmServiceClient("RequireNewInstance=True;
Url=https://xxx.crm.dynamics.com; Username=myUser@myCompany.onmicrosoft.com;
Password=myPassowrd; AuthType=Office365");
Run Code Online (Sandbox Code Playgroud)
client2继续使用第一个连接字符串,因此您无法确定新的连接字符串是否正确。
有什么想法如何在我的asp.net应用程序中正确测试Dynamics Crm连接字符串?
我想我发现了问题。这似乎只发生在 Dynamics 365 在线试用中,这就是我们根据环境得到不一致结果的原因。
显然,建立与 CRM 在线试用环境的连接的 url 不需要完全有效,只要凭据有效并保留 url 结构即可。
让我们考虑以下示例:
var client1 = new CrmServiceClient("RequireNewInstance=True;
Url=https://fake.crm.dynamics.com;
Username=myUser@myCompany.onmicrosoft.com; Password=myPassowrd;
AuthType=Office365");
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可以用我想要的任何内容替换 url 的“假”部分,但仍然使用 CrmServiceClient 服务正确执行请求。
如果我尝试在其他环境(例如 2015 年、本地、非试用 crm 在线等)中执行此操作,CrmServiceClient 的 IsReady 属性将返回 false,并且我会在 LastCrmError 属性中收到错误。
非常奇怪的行为,很难确定。现在我想我理解了不一致的行为,我知道它最终不会影响我们的客户,所以我会将此响应标记为答案,即使我仍然不知道为什么我们在试验和正常环境之间有不同的行为。
| 归档时间: |
|
| 查看次数: |
3114 次 |
| 最近记录: |