【问题标题】:Unable to call .NET 4.6.1 project from DotNetCore when published to IIS发布到 IIS 时无法从 DotNetCore 调用 .NET 4.6.1 项目
【发布时间】:2018-10-23 21:37:59
【问题描述】:

我目前有一个引用 DotNetStandard 项目(针对 v2.0)的 DotNetCore REST API(针对 v2.1)。 .NET Standard 项目引用了一个调用 Sybase IQ 数据库的 .NET Full Framework 项目(面向 v4.6.1)。

当我使用 IIS Express 在 VS2017 中运行我的应用程序时,这一切都运行良好,但是一旦我发布应用程序并尝试调用引用 .NET 4.6.1 应用程序的 Api 端点,我会收到以下错误:

System.IO.FileNotFoundException:无法加载文件或程序集>'System.Drawing.Common,版本 = 0.0.0.0,文化 = 中性,>?>PublicKeyToken = cc7b13ffcd2ddd51'。系统找不到指定的文件。

奇怪的是,我的项目或引用的 Dll 都没有引用 System.Drawing.Common(或 System.Drawing 命名空间中的任何内容)。所有其他功能都按预期工作。

我曾尝试使用 Nuget 手动添加 System.Drawing.Common.dll(最新版​​本为 4.5.1),但这并不能解决问题。添加 Nuget 包后,我尝试将程序集绑定重定向添加到已发布文件夹中的 web.config:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Drawing.Common" culture="neutral" 
            publicKeyToken="cc7b13ffcd2ddd51" />
            <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.6.26919.2" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

但错误仍然存​​在。

有没有人知道是什么原因造成的?

【问题讨论】:

  • 由于对“.NET Full Framework 项目”的依赖,您应该在 .NET Framework 而不是 .NET Core 上运行 .NET Core 项目。

标签: c# .net .net-core iis-7.5 .net-standard


【解决方案1】:

Lex Li 的答案是正确的。我将 Api 应用程序的目标框架更改为 net471,它现在可以按预期工作了。

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多