无法加载DLL' Microsoft.Azure.Documents.ServiceInterop.dll' [使用Microsoft.Azure.DocumentDB 1.17.0]

时间:2017-11-03 02:48:49

标签: azure dll azure-cosmosdb

我在我的项目中使用Microsoft.Azure.DocumentDB 1.17.0并获得以下错误。 " ServiceInterop.dll" Dll存在于具有Microsoft.Azure.DocumentDB dll的文件夹中。但仍然低于错误

System.AggregateException: One or more errors occurred. ---> System.DllNotFoundException: Unable to load DLL 'Microsoft.Azure.Documents.ServiceInterop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at Microsoft.Azure.Documents.ServiceInteropWrapper.CreateServiceProvider(String configJsonString, IntPtr& serviceProvider)
   at Microsoft.Azure.Documents.Query.QueryPartitionProvider.Initialize()
   at Microsoft.Azure.Documents.Query.QueryPartitionProvider.GetPartitionedQueryExecutionInfoInternal(SqlQuerySpec querySpec, PartitionKeyDefinition partitionKeyDefinition, Boolean requireFormattableOrderByQuery, Boolean isContinuationExpected)
    at Microsoft.Azure.Documents.Query.DocumentQueryExecutionContextBase.<GetPartitionedQueryExecutionInfoAsync>d__0.MoveNext()
 --- End of stack trace from previous location where exception was thrown ---
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    at Microsoft.Azure.Documents.Query.DocumentQueryExecutionContextFactory.<CreateDocumentQueryExecutionContextAsync>d__5.MoveNext()
 --- End of stack trace from previous location where exception was thrown ---
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.Documents.Linq.DocumentQuery`1.<CreateDocumentQueryExecutionContextAsync>d__12.MoveNext()
    --- End of inner exception stack trace ---
    at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
    at Microsoft.Azure.Documents.Linq.DocumentQuery`1.<GetEnumerator>d__b.MoveNext()
    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)

3 个答案:

答案 0 :(得分:3)

是的,我也观察到这是一个奇怪的问题。出于某种原因,CLR抱怨Microsoft.Azure.Documents.ServiceInterop.dll丢失,即使它实际上是其中一个依赖项DocumentDB.Spatial.Sql.dll丢失了。请确保这两个本地dll都存在。

答案 1 :(得分:3)

我遇到了同样的问题(尽管使用的是Microsoft.Azure.DocumentDB.Core(1.7.1)。

通过安装,我已经解决了这个问题 https://www.nuget.org/packages/Microsoft.Azure.DocumentDB/ nuget包。

  

PM&GT;安装包Microsoft.Azure.DocumentDB -Version 1.19.1

现在在同一行我收到错误: 消息:{“错误”:[“指定了无效查询,其中包含针对未进行范围索引的路径的过滤器。请考虑在请求中添加允许扫描标头。”]}

所以,感觉基本上我的查询在某种程度上是有问题的,但是在我安装框架nuget之前(并且只有核心nuget),库没有对错误做出优雅的响应。

fwiw我已经把我的/ c(窗口10c驱动器)和/ z(已安装的数据驱动器放在我的源头上) - 请看这里这些dll的位置。

好的,现在修复实际的查询!

另外,fwiw: 根据这个文件: https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet

  

1.11.0   修复了在将Nuget包与具有project.json工具的项目一起使用时,将Microsoft.Azure.Documents.ServiceInterop.dll和DocumentDB.Spatial.Sql.dll程序集自动binplacing到应用程序的bin文件夹。   

     

1.9.2   修复了在引用Azure Cosmos DB项目并引用Azure Cosmos DB Nuget包时引用的DocumentDB.Spatial.Sql.dll和Microsoft.Azure.Documents.ServiceInterop.dll缺少的引用。

这意味着过去已经修复了这个问题,可能已经在.net版本和/或.net核心2.0版本中退化了吗?

[1]

$ find /c -iname "*Microsoft.Azure.Documents.ServiceInterop.dll*"
./Users/<myuser>/.nuget/packages/microsoft.azure.documentdb/1.19.1/runtimes/win7-x64/native/Microsoft.Azure.Documents.ServiceInterop.dll
./Users/<myuser>/.nuget/packages/microsoft.azure.documentdb/1.6.1/build/native/Microsoft.Azure.Documents.ServiceInterop.dll
./Users/<myuser>/.nuget/packages/microsoft.azure.documentdb.core/1.7.1/runtimes/win/native/Microsoft.Azure.Documents.ServiceInterop.dll
./Users/<myuser>/AppData/Local/Azure.Functions.Cli/1.0.7/Microsoft.Azure.Documents.ServiceInterop.dll


$ find /z -iname "*Microsoft.Azure.Documents.ServiceInterop.dll*"
./Git/documentdb-dotnet-todo-app/packages/Microsoft.Azure.DocumentDB.1.6.1/build/native/Microsoft.Azure.Documents.ServiceInterop.dll
./Git/documentdb-dotnet-todo-app/src/bin/Microsoft.Azure.Documents.ServiceInterop.dll
./Git/ReturnAdB2cGroups/CalorieCruncher/bin/Debug/netstandard2.0/bin/runtimes/win/native/Microsoft.Azure.Documents.ServiceInterop.dll
./Git/ReturnAdB2cGroups/CalorieCruncher/bin/Debug/netstandard2.0/bin/runtimes/win7-x64/native/Microsoft.Azure.Documents.ServiceInterop.dll
./Git/ReturnAdB2cGroups/CalorieCruncher/bin/Debug/netstandard2.0/Microsoft.Azure.Documents.ServiceInterop.dll
./Git/ReturnAdB2cGroups/packages/Microsoft.Azure.DocumentDB.1.6.1/build/native/Microsoft.Azure.Documents.ServiceInterop.dll
./Git/ReturnAdB2cGroups/ReturnAdB2cGroups/bin/Debug/netstandard2.0/bin/runtimes/win/native/Microsoft.Azure.Documents.ServiceInterop.dll

答案 2 :(得分:1)

最近使用Microsoft.Azure.Documents.Core在Azure Function中出现此错误。似乎该nuget包中缺少该文件。

我创建了一个测试Web应用程序项目4.6。安装了nuget Microsoft.Azure.Documents。构建项目并将DocumentDB.Spatial.Sql.dll文件和Microsoft.Azure.Documents.ServiceInterop.dll文件复制到Azure中函数的bin文件夹中。您可以通过在Azure门户中下载发布配置文件来获取Function的ftp信息,并使用Filezilla等程序上传这些文件。之后我的功能运行良好。