我有一份申请。应用程序运行正常,但在我安装后错误开始出现
dotnet add package Microsoft.AspNetCore.Authentication.Negotiate --version 6.0.14
一旦我安装了这个包,并把这行代码在启动。cs文件:
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate();
services.AddAuthorization(options =>
{
options.FallbackPolicy = options.DefaultPolicy;
});
我开始得到这个错误:
System.IO.FileNotFoundException: 'Could not load file or assembly 'System.DirectoryServices.Protocols, Version=6.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.'
当我看到上面的错误时,我安装了这个包:
dotnet add package System.DirectoryServices --version 7.0.0
我仍然得到这个错误。程序中出现错误。cs文件。下面是错误的屏幕截图:
不幸的是,我没有看到www.example版本 www.example.com 系统目录服务。nuget协议。不确定为什么应用程序要查找www.example www.example.com 。已安装0.0版本。下面是安装在我的应用程序上的包:
我试着把这个放进我的网里。配置文件:
<configuration>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.DirectoryServices.Protocols" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.1" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</configuration>
1条答案
按热度按时间iezvtpos1#
更新:这是系统中的一个bug。DirectoryServices.第七章.0.0和Microsoft.AspNetCore.Authentication.协商已经修复,并将与下一个版本的软件包一起发布。请参阅此处对该问题的回复www.example www.example.com
在此期间,使用我的工作周围的使用旧版本的包。
既往分析(更新前)
我没有解决,但围绕这个问题工作,我将与你分享我的见解。也许有人根据我的发现找到了根本原因?
我在运行已发布的dotnet 6 exe时遇到了同样的错误。升级Microsoft时出现问题。AspNetCore.Authentication.谈判到6。0.16系统DirectoryServices.方案6.0.1至7.0.0。在Visual Studio中用F5运行exe可以工作,我没有对此的解释。我们在发布配置文件中使用
<SelfContained>false</SelfContained>
。与您的解决方案的不同之处可能在于我们需要引用System。DirectoryServices.协议直接在另一个项目中(而不是直接在exe中),因为我们也在同一个exe中以编程方式访问LDAP服务器。
我注意到系统的汇编版本。DirectoryServices.7.第7章.0.0是 www.example.com .0.1汇编版本为www.example www.example.com (见下面的截图)。因此,使用较新的包版本,您将获得较低的汇编版本。这很奇怪,我不认为这是最好的做法。我确实认为,这可能会在发布步骤中抛出dotnet的依赖管理,但我没有找到任何信息或证据。我为系统提交了一个问题。DirectoryServices,因为程序集版本:https://github.com/dotnet/runtime/issues/85296
旁注:程序集版本不显示在windows资源管理器的属性对话框中。获取汇编版本的最安全方法是通过https://learn.microsoft.com/en-us/dotnet/framework/tools/ildasm-exe-il-disassembler。
所以你的绑定重定向 * 必须指向 www.example.com 来实现这一点,但遗憾的是,dotnet 6中不再有绑定重定向(https://stackoverflow.com/a/46120907/4997872)。
根据我在网上找到的进一步信息(https://www.reddit.com/r/csharp/comments/112h640/could_not_load_file_or_assembly/https://learn.microsoft.com/en-us/answers/questions/1185993/system-io-filenotfoundexception-could-not-load-fil),目前唯一可行的解决方案似乎是继续使用系统。DirectoryServices.方案6.0.1并直接在应用程序中引用。至少这对我们是有效的。
好像是……什么东西……在7中被打破了。0.0系统DirectoryServices.导致冲突的协议或至少是Microsoft。AspNetCore.Authentication.谈判6.0.x不适用于系统。DirectoryServices.第七章.0.0.