我收到以下错误,其中系统认为正在修改 web.config 文件。实际文件显示自网站上次发布以来 web.config 文件的修改日期没有更改。重定向到另一个页面时会出现此问题,但发生问题的页面会发生变化,并且任何访问该站点的用户都会出现错误。重新发布应用程序可以暂时缓解该问题,但大约 24 小时后该问题将再次出现。任何想法为什么它认为文件正在改变,即使它没有改变?
Current User: NT AUTHORITY\NETWORK SERVICE Target Site: BaseConfigurationRecord.EvaluateOne Error: (System.Configuration.ConfigurationErrorsException) The configuration file has been changed by another program. (E:\PEC\web.config)
StackTrace: at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject) at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject) at System.Configuration.BaseConfigurationRecord.GetSection(String configKey) at System.Web.Configuration.RuntimeConfig.GetSectionObject(String sectionName) at System.Web.Configuration.RuntimeConfig.GetSection(String sectionName, Type type, ResultsIndex index) at System.Web.Configuration.RuntimeConfig.get_Authorization() at System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs) at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
最佳答案
我们发现这个问题是由 IIS 中的两个不同的应用程序被配置为指向同一个目录引起的——我们有一个 www.mysite.com 和 preview.mysite.com;我们将使用 msdeploy
设置预览克隆主站点,但没有意识到 www.mysite.com/foo 是一个独立的 IIS 虚拟应用程序 - 所以我们最终将 www.mysite.com/foo 和 preview.mysite.com/foo 都指向了同一个文件夹, 并“争吵”他们中的哪一个拥有配置文件,等等。
删除第二个虚拟应用程序解决了这个问题。
关于asp.net - 配置文件已被另一个程序更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2501473/