debugging - 调试时无法从 CRM 插件访问外部 SQL 数据库

标签 debugging dynamics-crm dynamics-crm-2015

我在从 CRM 插件访问外部数据库时遇到问题。 我收到的错误是:

"Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx' failed."

代码在“单元测试”中本地运行良好。我确保将插件隔离模式设置为“无”。 我试着看看这个article寻求帮助,并尝试了它建议的所有内容,但没有成功。

这是我当前使用的代码:

var conn = new SqlConnection(@"Server=MyServer\Instance;DataBase=MyDB;User Id=MyUser;Password=MyPassword;Integrated Security=false;");
conn.Open();

我还尝试了此连接字符串并授予 NT AUTHORITY\NETWORK SERVICE 用户对数据库的访问权限。

var conn = new SqlConnection(@"Data Source=MyDS\Instance;Initial Catalog=MyDB;Integrated Security=SSPI;");
conn.Open();

我使用的是 Dynamics CRM 2015 On-Premise。

更新:我在不调试的时候发现它可以工作,但是当我尝试通过插件注册工具调试它时,我得到了错误。知道为什么会发生这种情况吗?

最佳答案

SQL 连接需要“完全信任”才能建立 CRM 插件沙箱不在其中运行的连接。

我们在本地运行 CRM 2013,我经常在自定义插件和工作流程中调用外部数据库,但为了克服安全问题 - 我创建了一个处理这些请求的 Web 服务。

例如,更新帐户时调用更新 DB2 中的记录的工作方式如下:

  1. 在 CRM 中更新帐户记录
  2. 帐户插件已启动
    1. 建立与 MyCompanyWebService 的连接
    2. 调用 UpdateDB2(MyCompanyWebService 中的方法)

当然,您需要开发单独的 Web 服务,但(好的一面)它允许您分离逻辑,并且您可以完全控制 Web 服务内的信任级别。

关于debugging - 调试时无法从 CRM 插件访问外部 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35489351/

相关文章:

dynamics-crm-2011 - 获取父工作流列表,其中每个父工作流使用特定的子自定义工作流事件

objective-c - 与 iTunes 同步导致 Core Data 模型不兼容——这怎么可能?

c++ - 以编程方式清除 Visual Studio 输出窗口

dynamics-crm - 注册为 "post operation"的 Dynamics CRM 插件是在数据库事务内部还是外部运行?

javascript - 如何在 CRM 2011 中使用 Javascript 和 oData 获取 PartyList 字段的值

dynamics-crm - 你能写一个 FetchXML 查询来得到 1 :many relationship?

javascript - 动态 CRM 2015 : How do I get a Web Resource button I created to reference a function in a Javascript Library I added to the form?

c - 编写 GDB 脚本来收集数据

debugging - GNU Smalltalk 80 调试器。如何调试smallcode代码?启动调试器?

dynamics-crm - MS CRM 查询表达式 带 CRMBoolean 类型的条件表达式