发布到IIS时无法从DotNetCore调用.NET 4.6.1项目

时间:2018-10-23 21:38:00

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

我目前有一个DotNetCore REST API(针对v2.1),该API引用了DotNetStandard项目(针对v2.0)。 .NET Standard项目引用了.NET完整框架项目(针对v4.6.1),该项目调用Sybase IQ数据库。

当我使用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(最新版本为4.5.1)手动添加System.Drawing.Common.dll,但这不能解决问题。添加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>

但是错误仍然存​​在。

有人对造成这种情况的原因有任何想法吗?

1 个答案:

答案 0 :(得分:0)

Lex Li的答案是正确的。我将Api应用程序的目标框架更改为net471,现在可以正常使用了。