我有一个azure云项目,它利用了mongodb工作角色。在本地仿真器中运行时,一切正常,但是当我部署到azure暂存区域时,mongodb工作角色将一直处于循环状态,并显示system.io.filenotfoundexception。我远程连接到其中一个虚拟机并查看事件查看器,发现以下错误:
发生未处理的异常。类型:System.IO.FileNotFoundException
进程ID:1936进程名称:waworkerhost线程ID:4 appdomain
0中mongodb.windowsazure.mongodb role_角色的未处理异常
异常:无法加载文件或程序集“mswacdmi,版本=1.7.0.0,
区域性=中性,publickeytoken=31bf3856ad364e35'或其之一
依赖关系。系统找不到指定的文件。在
microsoft.windowsazure.storageclient.clouddrive..ctor(uri、uri和
存储凭据凭据)位于
microsoft.windowsazure.storageclient.cloudstorageaccountclouddriveextensions.createclouddrive(cloudstorageaccount
存储帐户,字符串pagebloburi)位于
mongodb.windowsazure.mongodbrole.utilities.getMountedPathFromBlob(字符串
localcachepath,字符串clouddir,字符串containername,字符串
blobname,int32 drivesize,clouddrive和mongodrive)输入
C:\users\matt\software\azureprototype1\mongo azure master\src\mongodb.windowsazure.mongodbrole\utilities.cs:line
78点
mongodb.windowsazure.mongodbrole.mongodbrole.getmongodatadirectory()
在C:\users\matt\software\azureprototype1\mongo azure master\src\mongodb.windowsazure.mongodbrole\mongodbrole.cs:mongodb.windowsazure.mongodbrole.mongodbrole.startmongod()的第255行
在中的C:\users\matt\software\azureprototype1\mongo azure master\src\mongodb.windowsazure.mongodbrole\mongodbrole.cs:line 201,位于mongodb.windowsazure.mongodbrole.mongodbrole.onstart()中
C:\users\matt\software\azureprototype1\mongo azure master\src\mongodb.windowsazure.mongodbrole\mongodbrole.cs:第91行,位于
Microsoft.Windowsazure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(RoleType
Roletypeenum)在
microsoft.windowsazure.serviceuruntime.implementation.loader.roleruntimebridge.b\u 0()
在system.threading.executioncontext.run(executioncontext
ExecutionContext,ContextCallback回调,对象状态,布尔值
ignoresynctx)在
system.threading.executioncontext.run(执行上下文
ExecutionContext,ContextCallback回调,对象状态),位于
system.threading.threadhelper.threadstart()
为什么这在本地工作而不是在azure上?我对集会之类的东西不太了解,但我正在学习。联机建议的一件事是检查引用程序集的属性,并将“copy local”设置为true,我已经尝试过此操作,但仍然存在相同的错误。
最佳答案
在worker角色项目中,确保您有一个属性设置为Copy Local=true的mswacdmi.dll
的.net引用。发布-RDP to your Azure role instance以验证部署的角色在/bin
目录中具有程序集时。
还要确保您的目标是x64-我在该路径找到了mswacdmi.dll
(azure sdk 1.8):
C:\程序文件\Microsoft SDKS\Windows azure.net sdk\2012-10\bin\runtimes\storage\cloud\x64