我创建了一个网页,用户可以上传一个文件,其中包含插入Microsoft Dynamics CRM 2011中潜在客户表的数据。
现在奇怪的是,当我部署到我们的测试环境时,应用程序似乎运行良好,但绝对没有导入任何行。在我的开发环境中它运行得很好。
在尝试查找错误一段时间后,我创建了一个不使用线程运行应用程序的设置(基本上是Thread.Run),然后插入所有潜在客户。如果我切换回使用线程,它根本不插入任何引线,尽管我没有应用程序错误。
使用SQL Server Profiler时,我可以在dev(它与线程一起工作)中看到所有insert语句都在运行。在测试环境中进行性能分析时,根本不会运行任何插入语句。
我觉得有一些服务器问题或设置导致了这种行为,但谷歌搜索时我并没有真正得到任何帮助我的结果。
我有点希望有人认识到这个问题。我没有太多使用线程的经验,所以这可能是我需要经历的一些路障。
我无法完全显示我的代码,但这基本上就是我启动线程的方式:
for (int i = 0; i < _numberOfThreads; i++)
{
MultipleRequestObject mpObject = new MultipleRequestObject() { insertType = insertType, listOfEntities = leadsForInsertionOrUpdate[i].ToList<Entity>() };
Thread thread = new Thread(delegate()
{
insertErrors.AddRange(leadBusinessLogic.SaveToCRMMultipleRequest(mpObject));
});
thread.Start();
activeThreads.Add(thread);
}
// Wait for threads to complete
foreach (Thread t in activeThreads)
t.Join();
我像这样初始化我的crm连接(它从web.config读取连接字符串 - &gt; connectionstrings)
public CrmConnection connection { get; set; }
private IOrganizationService service { get; set; }
public CrmContext crmContext { get; set; }
public CrmGateway()
{
connection = new CrmConnection("Crm");
service = (IOrganizationService)new OrganizationService(connection);
crmContext = new CrmContext(service);
}