0

我有 ASP.NET MVC 应用程序,它包含一些文件夹,其中包含可以在应用程序在 IIS 中运行时实时更改的文件。

当我更改扩展名为.resx(不生成代码)和.xml(具有自定义内容)的某些文件时,我的应用程序池会被刷新,我不想要这种行为,但是如果我更改.cshtml,那么池不会刷新.

当我将提到的“有问题的”文件放在 App_Data 文件夹中时,池将不会被刷新,但也许其他文件夹也有解决方案。

例如,如果我的应用程序中有这样的文件夹结构:

    App_Code
    App_Data
    - file1.resx    // when its content changes the pool DOESN'T get refreshed
    - files2.xml    // when its content changes the pool DOESN'T get refreshed
    - files3.cshtml // when its content changes the pool DOESN'T get refreshed
    CustomFolder
    - App_LocalResources
    -- file1.resx    // when its content changes the pool gets refreshed
    -- files2.xml    // when its content changes the pool gets refreshed
    -- files3.cshtml // when its content changes the pool DOESN'T get refreshed

如果某些特定文件或文件类型发生更改,如何防止 IIS 应用程序池刷新?

谢谢你的帮助。

4

2 回答 2

1

我认为这App_Data是一个特殊的目录,应用程序重新启动/重新加载会忽略它,因为很多动态/变化的内容可能会在那里结束。

从 MSDN 关于resx文件:

.resx(基于 XML 的资源格式)文件被转换为公共语言运行时二进制 .resources 文件,这些文件可以嵌入运行时二进制可执行文件或编译到附属程序集中。

从那开始,我认为应用程序正在重新启动,因为该resx文件是在运行时编译的。

我认为没有办法阻止这种行为。关于如何在修改 web.config 时防止 ASP.NET 应用程序重新启动有一些想法?但我还没有尝试过这些。

于 2013-07-18T13:36:48.257 回答
0

找到了解决方案。.resx文件更改时应用程序池回收的问题位于 App_LocalResources 文件夹中。我将所有文件从这个文件夹移动到一个名为 Resources 的新文件夹(与 App_Data 几乎相同,因为它不是系统文件夹)。

新的文件夹结构如下所示:

App_Code
App_Data
- ...
CustomFolder
   Resources
     file1.resx
     files2.xml
     files3.cshtml
于 2013-07-18T16:57:16.517 回答