我们正在尝试将Azure存储模拟器和Azure CosmosDB模拟器用于本地开发以及作为CI / CD构建的一部分进行单元测试。以下是有关这些模拟器的详细信息的主要链接: https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator
作为这项工作的一部分,我们需要一些方法来启动和停止两个模拟器。我们已尝试在Docker上运行,但由于反病毒干预等问题,它有自己的问题,所以我不想在这篇文章中讨论该选项。
这是我们的主要要求 - 在机器重启/启动期间启动模拟器。我们能够通过调用适当的命令通过Windows任务计划程序启动模拟器,以便在Azure存储模拟器的情况下工作,这非常简单。所以我们尝试了与CosmosDB仿真器相同的方法,但它只是失败了"灾难性故障(0x8000FFFF)"没有太多细节的错误来解决问题。这是在Windows Server 2016 Standard计算机上,但我在Windows 10 Enterprise计算机上也得到了相同的结果。
从那时起,我尝试了以下几个其他选项:
这在我手动运行批处理文件时有效,但不能通过任务调度程序运行。
使用PowerShell的方法与上述相同。
最后,我使用Topshelf创建了一个Windows服务,它在使用visual studio或调试代码运行时再次起作用,但在我安装服务并在服务控制台中运行时却没有。
我们尝试过使用具有管理员权限的用户帐户。我错过了在原帖中添加以下详细信息:
如果由我或我的团队成员手动运行,CosmosDB模拟器将启动,但当任务调度程序调用它时,会将以下错误写入系统日志
特定于应用程序的权限设置不会为具有CLSID的COM Server应用程序授予“本地激活”权限 {D63B10C5-BB46-4990-A94F-XXXXXXXXXXXX} 和APPID {9CA88EE3-ACB7-47C8-AFC4-XXXXXXXXXXXX} 用户{Damain} {UserName} SID(S-1-5-21-174494438-4207865126-xxxxxxxxx-xxxxx)来自地址LocalHost(使用LRPC)在应用程序容器中运行的不可用SID(不可用)。可以使用组件服务管理工具修改此安全权限。
还有其他选择可以让它发挥作用吗?
答案 0 :(得分:1)
在下面发布David Noble的答案,以便其他人可以使用它:
请允许我自我介绍。我是Cosmos DB Emulator的开发者。谢谢你的写作。
要通过任务计划程序启动模拟器,请尝试使用以下命令行选项:/ noui。另请确保该任务在属于Administrators组的帐户下以最高权限运行。
我刚刚定义了这样一个在登录Windows 10开发框时运行的任务。它在我的域帐户下运行此命令行,该帐户属于本地Administrators组: “C:\ Program Files \ Azure Cosmos DB Emulator \ CosmosDB.Emulator.exe”/ noui
我确认当我执行此任务时:
•如果没有/ noui选项,我看到了您看到的错误:E_UNEXPECTED(0x8000FFFF),灾难性故障。
•使用/ noui选项,模拟器正确启动(没有任务栏图标,也没有按预期打开数据资源管理器),我可以使用数据资源管理器创建文档。
请试一试,让我们知道它是怎么回事。如果需要,我来帮忙。