当我编辑 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中获得最新版本的排除文件时会发生什么?会更新吗?