2011-04-19 63 views
7

情况是我为一个类做了一个小错误修复,所以他们只想部署受影响的dll。他们停止了IIS,用我给他们的新站点替换了网站iis目录的/ bin文件夹中的dll,并再次启动了iis。有多个服务器,但他们只是改变了一个来试用它。他们仍然在服务器的事件日志中看到相同的错误。看着堆栈跟踪,我可以告诉它正在运行旧的DLL。网站更改后以某种方式运行缓存的dll

他们检查了GAC,但没有看到它。

我用反射器检查了dll,以确认我给了他们正确的新dll。

这是一个asp.net 2.0网站,服务器是2003.我不确定它是如何最初部署的,但它具有C:\ Windows \ Microsoft.NET \ Framework64 \ v2中的旧DLL副本.0.50727 \ Temporary ASP.NET Files \ NAME_services ################# \ assembly \ dl3 ################### \和D:\ xxxx \ Sites \ NAME \ Services \ obj \ Release中。它可以使用其中之一还是构建旧的,甚至只是将其缓存在内存中?

+0

错误在哪里?它是在aspx页面还是在代码中的某处? – Aliostad 2011-04-19 19:16:44

+0

这是在代码中,我可以看到dll的一个组合的修复。 – dwidel 2011-04-19 19:43:14

回答

7

删除您的临时asp.net文件夹内容。但不知道为什么更新不会自动进行编译。

+0

这种部署是否自动编译?如果是这样,可能是问题,因为他们只是张贴DLL,而不是来源。 – dwidel 2011-04-19 20:03:47

+0

@dwidel,有时Asp.Net goofs,只是不会将文件复制到Temporary Asp.Net Files文件夹中。吹走它将确保它自己解决。 – Andy 2011-04-19 20:08:04

+0

@dwidel永远不要将您的源放在服务器上。 @安迪是对的 - 有时候会发生这种情况。谢天谢地,这很少见。 – 2011-04-19 20:34:33

0

您不必停止IIS来部署更新,只需将它们复制过来即可。

此外,如果他们只复制DLL,但是您的修复程序位于.aspx文件中,则不会显示。你应该真的做一个完整的部署。

+0

修复肯定是在DLL中,我可以使用反射器来拆解DLL并查看修复程序。 – dwidel 2011-04-19 19:39:50

+2

这不适用于数量惊人的情况。这取决于应用程序的开发方式。 IIS缓存文件,有时它需要吹出临时文件。 – 2013-02-01 08:09:20

1

我们有同样的问题,但有一些小问题,我们有很多很多网站,所以“清除所有温度”并重新启动IIS对我们来说不是一个好的选择。所以我们需要更多的选择来强制刷新。我在我们的质量保证机器下,在...“C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files” 我做了一个文件资源管理器搜索部分文件名正试图释放。该文件在一个文件夹中找到,如下所示: C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 4503212x \ ad95664x,因此我停止了应用程序池,删除了该文件夹,重新启动并所有人都被部署了 - 太棒了!

但是....我们在部署到生产时遇到了同样的问题,上面没有工作。

长话短说,质量保证应用程序池被设置为“启用32位真”,但产量被设置为“假”,以便督促临时文件在居住: “C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319“改为(\ Framework64 \而不是\ Framework \)。

如果清除临时文件不起作用 - 请检查您的框架,或查找要在C:\ Windows \ Microsoft.NET文件夹级别及以下级别刷新的文件。你可能会感到惊讶。