4

我的开发 PC 上有一个运行 WinXP 和 IIS 5.1 的 Web 应用程序项目。我对这个站点所做的更改似乎只有在我执行 IISRESET 后才会“生效”。也就是说,我进行了源代码更改,重建项目,然后在不调试(或调试)的情况下启动。除非我使用 IISRESET 进行干预,否则新更改的代码不是“可见的”或有效的。

顺便说一句,Web 应用程序项目的“属性”显示上的“Web”选项卡配置为使用项目 URL 处的本地 IIS Web 服务器:http://localhost/myVirtualDirectory

...

但是我在使用 VStudio Dev Server 时注意到了同样的问题(即,我必须通过访问任务栏托盘区域来停止它才能看到我的源更改生效)。

这是我可以改变的吗?

编辑更新:

如果可能的话,只是想弄清楚这一点。下面有两个答案不同;不知道如何前进。有人说这是意料之中的(IIS 5.1 的弱点又是 WinXP 可以提供的最好的)。另一种说法是这不是预期的行为(我倾向于同意,因为这是我第一次在我有很长时间的同一个旧 WinXP 开发平台上遇到这种情况)。我怀疑它可能是从 VStudio 2002 (ASP.NET 1.1) 升级到这个新 IDE 的 Visual Studio 2008 Web 应用程序的“内部”。我试图在每个答案路径下添加评论/问题。谢谢。

4

7 回答 7

4

这根本不是正常行为。ASP.NET 应该自动重新加载您放在 bin 目录中的任何程序集。如果您使用的是动态编译,它也应该在代码隐藏文件中获取新代码。

一,确保您使用的是正确的 CodeFile 或 CodeBehind 指令。CodeFile 用于动态编译。

如果您有一个 Web 应用程序项目并将您的 .cs 源文件编译成 DLL,那么请确保您的项目将 DLL 放到正确的目录中……即 /[ApplicationRoot]/bin。

于 2010-02-17T20:52:35.677 回答
1

这不会改变它,但您可以将 IISReset 作为构建后脚本的一部分。

于 2010-02-17T17:22:58.640 回答
1

您可能需要检查位于此处的注册表项:

HKLM\Software\Microsoft\ASP.NET\FCNMode

如果您看到此注册表项,请确保将其设置为 0 或大于 2。如果将其设置为 1,则 ASP.NET 在您构建时不会收到文件更改通知,您将遇到您所描述的确切症状。每当您构建 Web 应用程序解决方案时,应用程序都应该重新启动。如果这没有发生,这可能就是答案。

于 2010-04-29T12:55:31.727 回答
1

我不得不说这不是标准行为。本人在VS2005上开发有一段时间了,一直在用XP、2003及以后的系统。但即使在 XP 上,我也从未发生过这种情况。

去年,我的两个同事仍在使用 XP 来开发我们一直在使用的 Web 应用程序。我们正在开发完全相同的代码库,在 SVN 存储库中共享。其中一个有同样的问题你在这里,我们找不到解决方案,我们只是保持原样..另一个同事的机器工作得很好(都在相同的硬件上)

这是一个悲伤的故事,因为最终他的 IIS 变得如此混乱,以至于他被迫使用 VS Web 服务器几个月,直到系统管理员同意在他的盒子中重新安装 Windows :)

故事的士气?我认为您的 Windows / IIS 安装搞砸了...尝试从 MS 获取最新更新,如果没有其他帮助 - 我建议您进行全新安装.. 抱歉,但希望这会有所帮助...

于 2010-04-20T06:10:34.327 回答
0

相同的症状以及永久的内存使用增长曾经向我表明,由于错误的单例使用,某些控件没有被清理。我建议对您的应用程序进行一些内存分析。

于 2010-04-19T14:37:37.170 回答
0

有同样的问题,并设法找到一个奇怪的答案。

问题:当源代码被编辑并且 IIS 不想更新编辑时。

在项目设置中,Web 我将服务器更改为使用 Visual Studio 开发服务器而不是使用 IIS Web 服务器。

然后用 F5 运行 VS Development Server,这样我就可以看到 SourceCode 编辑后的变化。我离开了设置,但随后使用 IIS 服务器转到了我的主页。现在,更改正在按应有的方式更新。

因此,当省略 IIS 并告诉它不要在项目设置中使用时。IIS 正在获取新的源代码并显示更改。

于 2010-07-14T12:27:03.227 回答
0

我过去也遇到过类似的问题。总是会触发应用程序正确重新加载的是 web.config 中的任何更改。

只需在末尾插入一个空字符串并保存它,Web 应用程序将在下一页加载时重新加载。出于我的目的,我创建了一个脚本,在每次构建后都会执行此操作。这听起来很简单,但它总是有效的。

于 2010-04-20T11:55:35.427 回答