我有一个奇怪的问题,这让我抓狂…
我有一个简单的类库项目(完整的.NET框架,4.6.1)与围绕Cosmos DB的功能包装器类。因此,我将“Microsoft.Azure.DocumentDB”NuGet包1.19.1添加到此项目中。除此之外,我还提到了“Newtonsoft.Json”NuGet包10.0.3,以及几个"Microsoft.Diagnostics.EventFlow“。*“NuGet包。
到目前为止,一切编译都没有任何错误。
但只要我点击我的包装器类-从一个简单的服务结构无状态服务(完整的.NET框架4.6.1)消费-并尝试执行以下代码行:
_docClient = new DocumentClient(new Uri(cosmosDbEndpointUrl), cosmosDbAuthKey);
我在运行时收到这个奇怪的错误:
System.IO.FileNotFoundException发生HResult=0x80070002
Message=Could不加载文件或程序集“”System.Net.Http,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a“”或其依赖项之一。“”系统找不到指定的文件。
Source= StackTrace: at Microsoft.Azure.Documents.Client.DocumentClient.Initialize(Uri serviceEndpoint,ConnectionPolicy connectionPolicy,可为空1 desiredConsistencyLevel) at Microsoft.Azure.Documents.Client.DocumentClient..ctor(Uri serviceEndpoint, String authKeyOrResourceToken, ConnectionPolicy connectionPolicy, Nullable
1个desiredConsistencyLevel)
内部异常1: FileNotFoundException:未能加载文件或程序集“”System.Net.Http,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a“”或其依赖项之一。“”系统找不到指定的文件。
我完全不知道为什么找不到System.Net.Http程序集--在我的类库项目中甚至有一个对.Net框架程序集“System.Net.Http 4.0.0.0”的程序集引用。
我也不明白的是,有一个奇怪的绑定重定向到4.2.0.0 -这是从哪里来的?为了解决这个问题,我尝试将以下重定向添加到服务Fabric服务的app.config (它正在使用类库):
但仍然没有区别,我仍然在运行时得到错误。
有谁有线索吗?有没有人见过这样的问题?
谢谢并致以问候,OliverB
发布于 2018-02-19 17:11:54
您面临的问题与Visual Studio有关,尤其是2017System.Net.Http v4.2.0.0
..。然而,采用任何引用都应该通过NuGet完成的新方法,最新版本的System.Net.Http
4.3.3包含dll版本4.1.1.2。
问题是,VS在构建时和运行时都会忽略您的引用,并且它会尝试引用它所知道的DLL。
如何修复:
确保所有对System.Net.Http的引用都是通过NuGet完成的
构建时错误:
更改VS 2017附带的System.Net.Http.dll扩展(或将其移动到某个位置else...basically摆脱它)(c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\
);如果您有一个不同的版本,那么路径将略有不同,但不会太多
运行时错误:
添加程序集绑定重定向
如果你在google上在线查看,你会发现微软在这方面有一些公开的问题,所以希望他们能在未来解决这个问题。
希望这能有所帮助。
更新:
在寻找此问题的一些永久性修复以在构建代理上工作时,请注意,如果迁移到新的NuGet PackageReference模型(在.csproj
不在packages.config
)往往工作得更好。以下是有关如何执行此升级的指南的链接:
https://docs.microsoft.com/en-us/nuget/reference/migrate-packages-config-to-package-reference
发布于 2017-11-30 23:41:32
删除绑定重定向对我很有效,您可以尝试删除它:
发布于 2019-06-26 09:00:16
我刚安装了System.Net.Http
使用NuGet。你可以在这里找到它:
https://www.nuget.org/packages/System.Net.Http/
The The TheASP.NET MVC
我正在做的项目.NET 4.6.1
..。在我的机器上调试时,它工作得很好。IIS Express
使用Visual Studio 2019。
尝试运行部署到Azure的应用程序时出现问题。我得到了这个错误:
未能加载文件或程序集“”System.Net.Http,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a“”或其依赖项之一。“”
在我的例子中,真正起作用的是打开.csproj文件并搜索System.Net.Http
如下面的截图所示。
请注意,.csproj
文件有版本4.1.1.3
实际上指向..\packages
来自Nuget的文件夹,也就是说,这是Nuget安装的真实版本。一旦部署,这个特定的版本也将在服务器端恢复,并且一切都应该通过绑定重定向工作。
..。因此,绑定重定向中应该提到这个特定的版本。Web.config
如下所示:
在我的例子中,在提交了几次之后,这个问题就解决了。
Azure Kudu..。Azure网站最终在没有错误的情况下启动。
https://stackoverflow.com/questions/47570912
复制相似问题