我收到以下错误,系统认为正在修改web.config文件。实际文件显示自上次发布站点以来web.config文件修改日期没有任何更改。重定向到另一个页面时会出现此问题,但发生问题的页面将发生更改,并且访问该站点的任何用户都将存在错误。通过重新发布应用程序可以暂时缓解此问题,但在大约24小时内问题将会恢复。任何想法为什么它认为文件正在改变,即使它不是?
当前用户:NT AUTHORITY \ NETWORK 服务目标网站: BaseConfigurationRecord.EvaluateOne 错误: (System.Configuration.ConfigurationErrorsException) 配置文件已经存在 被另一个程序改变了。 (E:\ PEC \ web.config中)
StackTrace:at System.Configuration.BaseConfigurationRecord.EvaluateOne(字符串[] 键,SectionInput输入,布尔值 isTrusted,FactoryRecord factoryRecord,SectionRecord sectionRecord,Object parentResult)
在 System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord,SectionRecord sectionRecord,Object parentResult, Boolean getLkg,Boolean getRuntimeObject,Object&结果, 对象和放大器; resultRuntimeObject)at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(字符串 configKey,Boolean getLkg,Boolean checkPermission,布尔值 getRuntimeObject,Boolean requestIsHere,Object&结果,对象& resultRuntimeObject)at System.Configuration.BaseConfigurationRecord.GetSection(字符串 configKey) System.Web.Configuration.RuntimeConfig.GetSectionObject(字符串 sectionName)at System.Web.Configuration.RuntimeConfig.GetSection(字符串 sectionName,Type type,ResultsIndex 指数) System.Web.Configuration.RuntimeConfig.get_Authorization() 在 System.Web.Security.UrlAuthorizationModule.OnEnter(对象 source,EventArgs eventArgs)at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步,布尔& completedSynchronously)
答案 0 :(得分:1)
我们发现此问题是由IIS中的两个不同应用程序配置为指向同一目录引起的 - 我们有一个www.mysite.com和preview.mysite.com;我们使用msdeploy
来设置预览来克隆主站点,而没有意识到www.mysite.com/foo是一个独立的IIS虚拟应用程序 - 所以我们最终得到了www.mysite.com/foo和preview.mysite.com/foo都指向同一个文件夹,并且“争夺”其中一个拥有配置文件等等。
删除第二个虚拟应用程序解决了问题。
答案 1 :(得分:0)
对我来说,这个错误是有一个Web部署项目,其中包含web配置替换以及指向web.config中外部配置文件的链接,如:
看来你只能拥有一个或另一个。我写了一篇博文: http://blog.coultard.com/2012/02/fix-for-web-deployment-project.html
答案 2 :(得分:0)
我在Visual Studio中开发的网站上遇到过这种情况。
我设法通过删除网站的整个文件夹(物理路径),通过浏览器访问网站,恢复网站以及最终从Visual Studio再次发布网站来解决错误。