Mongodb worker角色抛出System.IO.FileNotFoundException

时间:2013-02-22 14:42:50

标签: mongodb azure azure-worker-roles azure-storage

我有一个使用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,我试过这个但仍然是同样的错误。

1 个答案:

答案 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