【问题标题】:Could not load file or assembly 'System.Diagnostics.DiagnosticSource on ASP.Net Core migration from VS2015 to VS2017ASP.Net Core 从 VS2015 迁移到 VS2017 时无法加载文件或程序集“System.Diagnostics.DiagnosticSource”
【发布时间】:2021-01-13 13:15:35
【问题描述】:

我在 ASP.Net Core(4.6.1 框架)中有一个网络,它使用我用 Visual Studio 2015 创建并在昨天发布的新 Visual Studio 2017 中打开的 Facebook 和 MS 外部登录。 VS2017对csproj、project.json等文件做了一些改动。

网站编译和执行都很好,除了一个部分。如果我使用 Facebook 或 Microsoft 外部登录,该网站会显示此陷阱:

FileLoadException: Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

System.Net.Http.WinHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
AggregateException: Unhandled remote failure.

Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler+<HandleRemoteCallbackAsync>d__6.MoveNext()

浏览器中的 url 显示它正在尝试从外部登录返回到本地(https://localhost:44321/signin-facebook?code=... 或 /signin-microsoft)。

System.Diagnostics.DiagnosticSource.dll(和 System.Net.Http.dll)的版本号是 4.6.24705.1。

我从头开始了一个新的 VS2017 项目,添加了 Facebook 和 MS 登录,它运行良好 - 让我在没有陷阱的情况下登录。 dll 的版本相同。

比较两个 csproj 文件显示了差异,但没有明显差异(与系统 dll 无关):

【问题讨论】:

  • 你能分享一下项目文件的不同之处吗?某些东西可能会传递地引用该程序集。
  • 添加了 csproj 差异的屏幕截图。

标签: authentication asp.net-core facebook-login visual-studio-2017


【解决方案1】:

为我解决的问题是向新迁移的项目添加对 System.Net.Http(版本 4.3.1)的 NuGet 引用。 https://www.nuget.org/packages/System.Net.Http/

【讨论】:

  • 谢谢,今天升级我的项目到 VS2017 遇到同样的错误
  • 这个错误也打击了我们。这是GitHub上的一个相关错误供参考:github.com/aspnet/JavaScriptServices/issues/487
  • 看起来他们的解决方案也是添加 System.Net.Http。
  • @Haukman 在将我的 XUnit 项目从 VS2015 转移到 VS2017 之后,我让它做它的事情并用 .csproj 替换 project.json 文件并不断收到这个 System.Diagnostics 错误。我的测试项目引用了一个使用 System.Net.Http 进行 API 调用的 dll。为什么测试项目需要引用它才能工作?不知何故,如果我使用 ReSharper Xunit 测试工具运行测试,则不需要此参考。
  • 我无法确定,但可能是其中一个依赖项正在使用它并且没有将其列为 NuGet 依赖项。我认为 System.Net.Http 有点“特殊”,因为它也包含在 .NET Framework 中的本地,它似乎总是搞乱我的项目的依赖项,添加它“解决”了很多问题。跨度>
【解决方案2】:

推荐的答案没有解决我的问题。尝试在 .Net Core 2 项目中引用 .Net 4.6.2 库时出现此错误。

为了解决这个问题,我必须添加 Microsoft.Windows.Compatibility nuget 包。 归功于:https://medium.com/@ans_ashkan/asp-net-core-and-windows-event-log-75770a80a666

【讨论】:

  • 救命稻草!我被 nuget 搞砸了,因为我更新了一个包,这让我很失望!
【解决方案3】:

在解决方案中未包含“System.Diagnostics.DiagnosticSource”的参考文献中

在 NUget 中安装“System.Diagnostics.DiagnosticSource”的最新版本“5.0.1”解决了我的问题。希望它也能解决你的问题。

【讨论】:

    【解决方案4】:

    使用托管在应用服务中的 Application Insights 监控的 .NET Core Web 应用程序的用户面临此问题

    当 .NET Core Web 应用程序依赖于 'System.Diagnostics.DiagnosticSource%u2019 二进制文件并将此二进制文件部署到 /wwwroot/ 文件夹时,这种情况很少见。

    解决方法:如果您遇到上述问题,请通过更改此应用设置来设置以前版本的监控扩展:ApplicationInsightsAgent_EXTENSIONVERSION=2.8.24

    完成此操作后,请重新启动应用程序。

    这里是source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多