团队城市上偶尔出现的错误"Unable to save config to file '...web.config'"



我们有时会在连续集成服务器(TeamCity)上遇到此错误:

Unable to save config to file '...web.config'.

这发生在我们不到10%的构建和不同的构建代理中,所以我想这不是权限的问题。

测试失败调用WCF服务,该服务写入另一个服务的Web.config文件。它不是不是线程安全,但据我所知,TeamCity不同行进行测试,否则我们的其他许多测试都会始终失败。

我试图通过产生许多调用配置服务的线程来重现错误,并得到了另一个例外:

The process cannot access the file '...web.config' because it is being used 
by another process

任何人都可以帮助我找到问题的原因,所以我至少可以通过稳定的测试重现它?

web.config上的文件锁定不会及时发布。当测试A导致写入Web.config时,不能保证Web.config上的文件锁定在完成测试时会发布。当测试B运行并试图写入Web.config时,锁可能仍在那里。这不太可能发生太多,因为锁通常很快就会释放。但是,它确实会偶尔发生,这可能是您10%的失败率。

写入web.config时,请使用尝试捕获块并在异常时重试写入。这不是100%可靠的,因此您可能需要考虑自定义文件锁定。

最新更新