正如标题所述,我正在寻找一种方法来区分由我的代码或基本CRM功能引起的错误与可能安装在客户端系统上的任何自定义插件引发的错误.
我们不断受害的是我们的客户定制的第三方插件,无论是他们在内部创建还是从另一个ISV购买.他们在我们接触的CRM实体上注册它,或者甚至在最近的一个案例中注册我们自己的实体.我们尝试做一些事情,插件尝试做它的事情并失败.在最近的例子中,插件在我们将其放入CRM后没有正确编码.该插件抛出错误,CRM将其抛回给我们.
如何在不浪费时间调查的情况下判断插件是罪魁祸首?到目前为止,我只看到一家公司通过将插件堆栈跟踪作为错误消息告诉它很容易.
编辑清晰度:
c# error-handling dynamics-crm dynamics-crm-2011 dynamics-crm-4
我已经看到了几个StackOverflow问题,但它们似乎与我的情况不符.我保证我看了.
我对我的数据库有一些查询,我正在使用linq来做,我无法弄清楚为什么生成错误的SQL.这在我的代码中的几个地方发生.我希望我们只是陷入一些众所周知的陷阱,但我无法理解为什么Linq似乎决定我的where子句是愚蠢的,不应该将它添加到生成的SQL查询中.
为什么是这样?
例:
var testing = (from i in context.TableName1 where i.Param1 == object1.GuidParam select i).ToList();
Run Code Online (Sandbox Code Playgroud)
以上查询返回以下SQL
{SELECT
[Extent1].[RecordId] AS [RecordId],
[Extent1].[AnotherId] AS [AnotherId],
[Extent1].[YetAnotherId] AS [YetAnotherId],
[Extent1].[WeLikeIds] AS [WeLikeIds],
[Extent1].[WeReallyLikeIds] AS [WeReallyLikeIds]
FROM [dbo].[SomeTable] AS [Extent1]}
Run Code Online (Sandbox Code Playgroud)
但是以下查询:
var testing = (from i in context.TableName1 where i.Param1 == object1.GuidParam select i);
var testingToList = testing.ToList();
Run Code Online (Sandbox Code Playgroud)
生成以下正确的SQL
{SELECT
[Extent1].[RecordId] AS [RecordId],
[Extent1].[AnotherId] AS [AnotherId],
[Extent1].[YetAnotherId] AS [YetAnotherId],
[Extent1].[WeLikeIds] AS [WeLikeIds],
[Extent1].[WeReallyLikeIds] AS [WeReallyLikeIds]
FROM [dbo].[SomeTable] AS [Extent1]
WHERE [Extent1].[RecordId] = …Run Code Online (Sandbox Code Playgroud) 主要问题:我如何通过C#SDK扩展60天访问令牌的2小时访问令牌?您是否可以提供代码已经交换2小时访问令牌的那个部分的样本?
背景:我一直在这里寻找并尝试各种解决方案,但还没有找到适合我的方案.我可以成功地进行/我调用并获取有关当前用户的信息,但是当我尝试扩展访问令牌时它失败了.
此应用程序的目标是允许用户设置帖子并在事件发生后监视喜欢和评论一段时间.显然,我们需要60天令牌.
当你可以申请永久令牌时,其他人做了90%的工作后,我正在接受这个项目.我的工作是修复它,以便我们可以使用60天令牌.我可能会问非常愚蠢的后续问题.做好准备!
当前流程:用户设置他的帖子,点击一个按钮,我们提示他们通过javascript sdk授权我们的app /登录facebook.在他们登录后,我们在javascript中处理其他不相关的东西,然后将其AJAX转移到C#以将一些信息保存到我们的数据库(包括令牌)并发布帖子.一切都很好,我在javascript中获得访问令牌就好了,我可以使用该2小时令牌来获取登录用户的信息,但是当我尝试扩展时,我得到两个错误之一,我将在下面提到导致它们的代码.
我尝试过的:
工作:我相信我在这里发现了另一篇文章.var fbClient = new FacebookClient(accessToken);
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("client_id", appId);
parameters.Add("redirect_uri", redirectURI);
parameters.Add("client_secret", appSecret);
parameters.Add("code", accessToken);
var result = fbClient.Get("/me", parameters);
Run Code Online (Sandbox Code Playgroud)
不工作:这来自各个地方,包括这里和sdk文档.我见过人们包括重定向网址,并说当你最初获得accessstoken时它需要匹配一个但是我们在javascript中做了这个并且没有使用重定向网址.Dictionary parameters2 = new Dictionary();
parameters2.Add("client_id", appId);
//parameters2.Add("redirect_uri", redirectURI);
parameters2.Add("client_secret", appSecret);
//parameters2.Add("code", accessToken);
parameters2.Add("grant_type", "fb_exchange_token");
parameters2.Add("fb_exchange_token", accessToken);
var result2 = fbClient.Get("/oauth/access_token", parameters2);
Run Code Online (Sandbox Code Playgroud)
错误:{Newtonsoft.Json.JsonReaderException:解析值时遇到意外的字符:a.第1行,第1位.错误2:如果我注释掉grant_type和fb_exchange_token并取消注释代码和redirecturi,我会得到与下一个方法相同的错误...
不工作:我从另一个帖子中抓取这里复制/粘贴重命名以匹配我的vars. 无法获得长期到期令牌
dynamic result3 = new ExpandoObject();
try
{
dynamic parameters3 = new ExpandoObject();
parameters3.grant_type = "fb_exchange_token";
parameters3.fb_exchange_token = accessToken;
parameters3.client_id = appId;
parameters3.client_secret …Run Code Online (Sandbox Code Playgroud) javascript c# facebook-javascript-sdk facebook-c#-sdk facebook-access-token
我有一个.dacpac文件,由MSBuild调用并发布到QA数据库进行测试.此发布失败,我从它们返回的错误是一个通用的"发生错误"消息.我希望我可以从dacpac生成部署脚本并遍历它以查看问题发生的位置,并希望教他们如何做到这一点.
有没有办法将dacpac指向特定的数据库并让它生成用于更新数据库的sql而不实际发布到数据库?