我在我的项目中使用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)
答案 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等程序上传这些文件。之后我的功能运行良好。