繁体   English   中英

Azure Document Db Worker角色

[英]Azure Document Db Worker Role

我在获取Microsoft.Azure.Documents库以azure worker角色初始化客户端时遇到问题。 我正在使用Nuget Package 0.9.1-preview。

我模仿了天蓝色文档示例中的操作

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

在此处输入图片说明

上面突出显示的底部System.NullReferenceException具有此调用堆栈 在此处输入图片说明

因此nullReferenceExceptions将从此调用中的新DocumentClient开始。

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

在本地运行它与在工作角色上运行(除了环境之外)之间没有任何变化(很明显)。

有没有人得到DocumentDb来充当工作者角色,还是有人知道为什么它会引发空引用异常? 传递给DocumentClient()的参数将被填充。

更新:我试图将其改写为更通用的名称,这至少有助于让worker角色运行并让我附加了调试器。 它在新的DocumentClient上引发错误。 似乎某些安全传递为空。 初始化时两个必需的参数都不为空。 我是否需要更改安全设置才能使工作角色能够连接到documentdb? (仍然可以在本地正常工作)

更新2:我可以让实例在发布模式下运行,但不能在调试模式下运行。 因此,这一定与某些安全性设置或存储设置配置错误有关。

看来我正在得到System.Security.SecurityExceptions-仅在使用The DocumentDb时-队列不会给我该错误。 该错误的所有调用堆栈似乎都与System.Diagnostics.EventLog有关。 我在Intellitrace摘要中看到的第一个异常是System.Threading.WaitHandleCannotBeOpenedException。

更多信息 Intellitrace摘要异常数据: 在此处输入图片说明在此处输入图片说明

顶部是最早的,底部是最新的(因此,首先发生System.Security.SecurityException,然后是NullReference)

我摆脱安全异常和空引用异常的解决方案是禁用intellitrace。 完成此操作后,我便能够部署并附加调试器,并看到一切正常。

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

无法复制。

我创建了一个新的工作者角色。 单实例。 已将authkey和endint配置添加到cscfg。

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

在OnStart中初始化DocumentClient在OnStop中处置DocumentClient

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

在仿真器中进行测试。 部署为生产版插槽。 作品。 作为调试部署到通过远程调试登台。 作品。 将VS附加到CloudService,断点在循环内。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM