【发布时间】:2020-04-26 19:08:47
【问题描述】:
我正在接管一个应用程序,但遇到了一个非常奇怪的问题。
背景:在我 rdp 进入的 Windows Server 2012 上运行的 60 多个相同的 IIS 应用程序。
除了一些图像文件和 web.config 文件之外,每个应用程序都是相同的。 (是的,我知道)
应用程序没有被编译,只是作为 cs 文件运行。也没有 proj 文件或 sln 文件。
有一个已编译的应用程序,它作为计划任务运行,并使用每个应用程序文件夹中的一些文件。
代码是 C#,我正在用 notepad++ 编辑它。
问题: 我一直在尝试更新其中一个测试应用程序中的一些代码,但我的更改似乎没有生效。 (特别是更新日志文件并发送电子邮件)。当前的电子邮件有效,但我的新电子邮件没有出现,我的日志文件也没有出现。
我试图在另一个测试应用程序中对其进行测试,只是想看看它是否在那里也失败了,并发现该网站在特定文件的特定行的某些代码中出现错误。
问题是,这行代码在实际的 cs 文件中不在同一行。
然后我在更高的位置添加了另一行,看看是否可以得到除以零的错误。
同样的结果。同一行代码以相同的行号失败。完全没有变化。
好像我的代码被缓存了,我无法刷新它。
我尝试确保它没有被唯一的计划任务缓存并完全循环 IIS(在根目录)。
仍在发生。
我知道这不是 exe 隐藏在某个地方的问题,因为两周前我对代码进行了更改并且它起作用了。我的改变出现了。我也知道我正在编辑正确的文件。我在 IIS 中使用“探索”打开了该文件夹。
没有 obj 文件夹。每个应用程序文件夹中都有一个 bin 文件夹,但 bin 文件夹中除了 nuget 包 dll 之外没有任何内容。
【问题讨论】:
-
这可能是由于卷影复制功能而发生的。如果您的 Web 应用程序相同,并且使用相同的应用程序池,则影子复制的程序集可能会引入冲突。这也可能导致本地机器出现问题(同时调试 asp.net 应用程序的不同分支),因为您收到一条消息“blah blah type 存在于 ... 和 ...”你能检查 windows root \Microsoft.Net\Framework(or Framework64)\<.netversion>\Temporary ASP.NET Files 文件夹,看看是不是这样?解决方案是为每个 Web 应用程序设置特定的卷影副本文件夹
-
@Oguz,该文件夹结构中似乎确实有文件,但我不知道哪个文件夹转到哪个应用程序。框架文件夹结构中似乎有_shadow文件夹,但没有framework64。但是我从那里做什么?看起来有很多 _shadow 文件夹,但不是每个文件夹都有一个。
-
@Oguz,另外,我注意到在 framework 和 framework64 中,最新的网络版本是 4.0.*,但是 web.config(无论如何对于一个应用程序)是
。不过,我不知道这是否表明了什么。 -
您好,4.5.2 就像 4.0 的更新一样,所以没关系,您可以尝试为每个应用(如 App1、App2、App3)设置
<system.web> <compilation tempDirectory="D:\MyTempFiles\App1" /> </system.web>吗?但请小心。我认为您需要在许多文件中进行此更改,因此请先备份 :) -
4.0.x 只是 .NET CLR 的版本,而不是 .net 框架。所以它很好。也可以在 IIS manager->configuration manager->system.web/compilation->tempDirectory 中指定临时目录。