gpt4 book ai didi

f# - 部署到IIS应用程序时升级FSharp.Core版本,程序集引用错误

转载 作者:行者123 更新时间:2023-12-04 04:36:56 27 4
gpt4 key购买 nike

我们将FSharp.Core.dll升级为IIS 8(ASP.NET Web API)上的Web应用程序部署的一部分,并开始在部署后立即看到FSharp.Core FileLoad异常。 FSharp.Core.dll版本从4.3.0.0变为4.3.1.0

我们的标准自动化部署涉及用更新的二进制文件(dll),global.asax和web.config替换应用程序文件夹的内容,从而导致IIS回收apppool。 FSharp.Core.dll捆绑在一起作为构建的一部分。我们的应用程序已部署到负载平衡的环境中。我们的自动化部署脚本使用“robocopy”清除应用程序目录(下面是mywebapp),并在其位置复制新内容。

IIS应用程序文件夹的典型结构:

mywebapp/bin/fsharp.core.dll
mywebapp/bin/custom-fsharp-lib.dll
mywebapp/bin/custom-csharp-lib.dll
mywebapp/bin/System.Web.Http.dll, etc…
mywebapp/global.asax
mywebapp/web.config

我们已经观察到,如果应用程序在部署期间未处理请求,则部署将成功完成。但是,如果应用程序在部署期间处于负载状态并正在处理请求,请使用 ,即,一旦部署完成,应用程序将为随后的每个后续请求抛出异常:

Unhandled exception processing POST for https://websiteName/application/endpoint: System.IO.FileLoadException Could not load file or assembly 'FSharp.Core, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) - at WebAppFunction.Execute…..(etc)



看到此异常后,我们检查了应用程序二进制文件,发现 FSharp.Core.dll版本为 4.3.1.0(即升级版本已正确部署)。看来,如果在部署过程中提供流量,则即使新部署的应用程序存在于应用程序bin文件夹中,也无法找到正确的 FSharp.Core.dll版本。看来该应用程序可能仍旧使用 FSharp.Core.dll版本。

服务器重新启动,IISReset或回收IIS应用程序池后,此问题仍然存在。我们的解决方案是将部署回滚到以前的构建(使用 FSharp.Core.dll v4.3.0.0),然后恢复应用程序。然后,我们将新构建(带有 FSharp.Core.dll v4.3.1.0)分别部署到每个服务器,同时在停止apppool的情况下将其从负载平衡器中拉出,从而确保部署期间没有负载,并且新构建成功部署。

无论程序集版本是否正在升级,我们都从未在Web应用程序的部署过程中观察到此行为。有没有其他人遇到过 FSharp.Core.dll这个问题,如果可以的话,可以解释这种现象吗?

最佳答案

您可能需要在web.config中添加程序集重定向:

 <dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />
</dependentAssembly>

您之前描述的错误是我们以前发生的(尽管不是在确切的部署时间),而以上正是解决问题的方法。

关于f# - 部署到IIS应用程序时升级FSharp.Core版本,程序集引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46827303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com