我有一个使用mongodb worker角色的Azure云项目。在本地模拟器中运行时一切正常,但是当我部署到Azure临时区域时,mongodb工作者角色会停止循环并显示System.IO.FileNotFoundException。我远程连接到其中一个虚拟机并查看了事件查看器,发现以下错误:
发生未处理的异常。键入:System.IO.FileNotFoundException 进程ID:1936进程名称:WaWorkerHost线程ID:4 AppDomain 角色MongoDB.WindowsAzure.MongoDBRole_IN_0的未处理异常 例外:无法加载文件或程序集'mswacdmi,Version = 1.7.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个 依赖。该系统找不到指定的文件。在 Microsoft.WindowsAzure.StorageClient.CloudDrive..ctor(Uri uri, StorageCredentials凭据) Microsoft.WindowsAzure.StorageClient.CloudStorageAccountCloudDriveExtensions.CreateCloudDrive(CloudStorageAccount storageAccount,String pageBlobUri)at MongoDB.WindowsAzure.MongoDBRole.Utilities.GetMountedPathFromBlob(字符串 localCachePath,String cloudDir,String containerName,String blobName,Int32 driveSize,CloudDrive& mongoDrive)in C:\用户\马特\ SOFTWARE \ AzurePrototype1 \蒙戈-天青主\ SRC \ MongoDB.WindowsAzure.MongoDBRole \ Utilities.cs:线 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:MongoDB.WindowsAzure.MongoDBRole.MongoDBRole.OnStart()中的第201行 c:\ Users \ Matt \ Software \ AzurePrototype1 \ mongo-azure-master \ src \ MongoDB.WindowsAzure.MongoDBRole \ MongoDBRole.cs:第91行 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(角色类型 roleTypeEnum)at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__0() 在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态,布尔值 ignoreSyncCtx)at System.Threading.ExecutionContext.Run(执行上下文 executionContext,ContextCallback回调,对象状态)at System.Threading.ThreadHelper.ThreadStart()
为什么这在本地工作而不在Azure上工作?我不太了解集会等等,但我正在学习。在线建议的一件事是检查引用程序集的属性并将“Copy Local”设置为true,我试过这个但仍然是同样的错误。
答案 0 :(得分:1)
在您的辅助角色项目中,确保您具有对mswacdmi.dll
的.NET引用,其属性设置为Copy Local=true。当您发布 - RDP to your Azure role instance以验证已部署的角色是否在/bin
目录中包含程序集时。
还要确保定位到x64 - 我在此路径中找到了mswacdmi.dll
( Azure SDK 1.8 ):
C:\ Program Files \ Microsoft SDKs \ Windows Azure.NET SDK \ 2012-10 \ bin \ runtimes \ storage \ cloud \ x64