当我编辑 web.config 时会发生啥?

Posted

技术标签:

【中文标题】当我编辑 web.config 时会发生啥?【英文标题】:What happens when I edit web.config?当我编辑 web.config 时会发生什么? 【发布时间】:2010-09-15 18:05:52 【问题描述】:

我需要在实时 Sharepoint 环境中编辑 web.config 文件,但我不确定这样做会发生什么(我想输出自定义错误)。

这会导致 IIS6 工作进程回收吗?

活跃用户会因此失去他们的会话状态吗?

或者我可以安全地编辑文件吗?

【问题讨论】:

您可以定义会话放置在远程机器上,因此应用程序重置不会导致会话丢失 【参考方案1】:

应用程序池将重新启动,会话状态将丢失。想象每个 ASP.NET 应用程序(在 IIS 中定义)都是桌面上的一个程序。保存 web.config 将执行类似于关闭程序并重新打开它的操作。

【讨论】:

不确定 IIS6,但在 IIS7 和 IIS8 中,这是 默认 行为,但您可以通过应用程序池 > 高级选项 > 回收 > 禁用回收配置更改来更改它= true 这对生产环境很有帮助,例如,这样管理员可以进行更改,直到下一次回收才生效。我相信,特别是 Sharepoint,有一种方法可以安排更改,以便在特定时间应用它们。 @nothingisnecessary 但是,设置Application Pools > Advanced Options > Recycling > Disable recycling 本身会导致应用程序池回收吗?海龟一路向下? 嗨@DanGoldstein。您提到“类似的事情”来关闭程序并重新打开。静态呢?静态状态是否确保被 web.config 编辑消除?原因是我在静态变量中缓存了一些 web.config 的东西。 老实说,我不再是这方面的信息来源。当我回答时,我正在全职使用 IIS 和 ASP.Net。这些天我只是一个业余软件开发人员。 @DirkBoer 我来这里的全部原因是要找出您问题的最终答案。根据我的经验,编辑 web.config 不会影响静态属性。【参考方案2】:
    是的。它将被回收。 是的。他们将失去会话。 是的。您可以安全地编辑该文件。我建议你阅读这篇 MSDN 文章:Working with web.config Files in Windows SharePoint Services

【讨论】:

【参考方案3】:

此外,如果会话状态配置为进程外(数据库或服务),则回收应用程序池不会丢失任何会话状态。这对于 Sharepoint 和 vanilla ASP.Net 一样适用。

【讨论】:

【参考方案4】:

当您编辑 web.config 时,它将重新启动该 Web 应用程序的 AppDomain(不是 AppPool)并清除所有占用的资源和内存。因此,在该 App Pool 下运行的其他 Web 应用程序不会受到影响。它还将清除会话(进程内)和内存缓存。

【讨论】:

【参考方案5】:

正如一些人已经提到的:IIS 中站点的应用程序池将重新启动(这通常需要几秒钟)。结果,下一页请求将变慢(因为不再缓存任何内容)。用户的会话状态也会丢失;但默认情况下不使用 WSS 会话状态,在 MOSS 中它由 InfoPath Form Services 使用。因此,您可能没有与丢失会话状态相关的大问题。

在另一边;为了克服这些问题:通常要做的是创建一个 SharePoint 解决方案 (WSP),该解决方案部署并启动一个计时器作业以从代码更改 web.config(使用对象模型的 SPWebConfigModification 类)。好处是您可以安排更改的执行时间,这样您的用户就不会注意到它。

【讨论】:

以上是关于当我编辑 web.config 时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

当我们在TFS中获得最新版本的排除文件时会发生什么?会更新吗?

当我删除指针的指针时会发生啥?

当我创建我的类的对象实例时会发生啥

当我在 Windows 上的 HID 设备上执行 ReadFile() 时会发生啥?

当我清除一个结构向量时会发生啥?

当我将 [::-1] 与变量一起使用时会发生啥? [复制]