Azure文档Db工作者角色

时间:2014-12-04 20:37:17

标签: azure azure-worker-roles azure-cosmosdb

我在使用Microsoft.Azure.Documents库以天蓝色工作者角色初始化客户端时遇到问题。我正在使用Nuget Package 0.9.1-preview。

我模仿了example for azure document

所做的事情

当通过模拟器在本地运行时,我可以很好地与documentdb连接,并按预期运行。在worker角色中运行时,我得到一系列NullReferenceException,然后是ArgumentNullException。

enter image description here

上面突出显示的底部System.NullReferenceException具有此调用堆栈 enter image description here

所以nullReferenceExceptions在新的DocumentClient调用中开始。

var endpoint = "myendpoint";
var authKey = "myauthkey";
var enpointUri = new Uri(endpoint);
DocumentClient client = new DocumentClient(endpointUri, authKey);

在本地运行与在环境之外的工作者角色(显然)之间没有任何变化。

是否有人让DocumentDb处理工作角色,或者是否有人知道为什么会抛出空引用异常?传递到DocumentClient()的参数将被填充。

更新 我试图重写它更通用,这至少让工作者角色运行,让我附加一个调试器。它将错误抛给新的DocumentClient。似乎某些安全传递是null。初始化时所需的两个参数都不为空。是否需要为我的worker角色更改安全设置才能连接到我的documentdb? (仍在当地工作正常)

更新2: 我可以让实例在发布模式下运行,但不能在调试模式下运行。所以它必须与某些安全设置或存储设置有关,我猜错误配置?

我似乎正在获取System.Security.SecurityExceptions - 仅在使用DocumentDb时 - 队列不会给我这个错误。该错误的所有调用堆栈似乎都与System.Diagnostics.EventLog有关。我在Intellitrace Summary中看到的第一个Exception是System.Threading.WaitHandleCannotBeOpenedException。

更多信息 Intellitrace摘要异常数据: enter image description here enter image description here

top是最早的,bottom是最新的(所以System.Security.SecurityException首先发生,然后是NullReference)

2 个答案:

答案 0 :(得分:4)

我摆脱安全异常和空引用异常的解决方案是禁用intellitrace。一旦我这样做,我就能够部署和连接调试器,看看一切正常。

不确定intellitrace中的null和DocumentClient之间的区别是什么,但希望它只是与nuget有关,它将在下一次迭代中得到修复。

答案 1 :(得分:3)

无法复制。

我创建了一个新的工作者角色。单个实例。添加了authkey& endoint config to cscfg。

在WorkerRole类级别创建私有静态DocumentClient

OnStart中的Init DocumentClient 在OnStop中配置DocumentClient

在RunAsync内部循环中, 执行查询按预期工作。

模拟器中的测试工作。 部署为发布到生产槽。作品。 通过远程调试部署为调试到暂存。作品。 附加VS到CloudService,断点在内部循环。

工作解决方案:http://ryancrawcour.blob.core.windows.net/samples/AzureCloudService1.zip