我在获取 Microsoft.Azure.Documents 库以将客户端初始化为 azure worker 角色时遇到问题。我正在使用 Nuget Package 0.9.1-preview。
我已经模仿了azure 文档示例中所做的事情
通过模拟器在本地运行时,我可以很好地与 documentdb 连接,它按预期运行。在工作角色中运行时,我收到一系列 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() 的参数已填充。
更新: 我尝试将其重写为更通用,这至少有助于让工作角色运行并让我附加一个调试器。它在新的 DocumentClient 上抛出错误。似乎某些安全传递为空。初始化时所需的两个参数都不为空。我需要更改安全设置以使我的工作人员角色能够连接到我的文档数据库吗?(在本地仍然可以正常工作)
更新 2: 我可以让实例在发布模式下运行,但不能在调试模式下运行。因此,我猜这一定与某些配置错误的安全设置或存储设置有关?
似乎我得到了 System.Security.SecurityExceptions - 仅在使用 DocumentDb 时 - 队列不会给我那个错误。该错误的所有调用堆栈似乎都与 System.Diagnostics.EventLog 相关。我在 Intellitrace 摘要中看到的第一个异常是 System.Threading.WaitHandleCannotBeOpenedException。
更多信息 Intellitrace 摘要异常数据:
top 是最早的,bottom 是最新的(所以 System.Security.SecurityException 先发生,然后是 NullReference)