首页 > 解决方案 > 更新 Web.config 时出现配置错误

问题描述

我想C#在 windows 容器中更新 web.config 文件。

以下是C#中更新web.config的功能

private void UpdateWebConfigFile()
{
    var configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
    var section = (System.Configuration.ConnectionStringsSection)configuration.GetSection("connectionStrings");

    var defaultConnection = section.ConnectionStrings["DefaultConnection"].ConnectionString;
    section.ConnectionStrings["DefaultConnection"].ConnectionString = Environment.ExpandEnvironmentVariables(defaultConnection);

    configuration.Save();
}

但发生错误configuration.Save();,我得到如下结果

Server Error in '/' Application.
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: An error occurred loading a configuration file: Access to the path 'C:\inetpub\wwwroot\tynfsgbl.tmp' is denied.

Source Error:


An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Source File: C:\inetpub\wwwroot\web.config    Line: 0

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.7.3535.0

我的问题是How to update Web.config in the application of Windows Container? 谢谢!

标签: c#dockerweb-configwindows-container

解决方案


容器在设计上是不可变的,因此,默认用户设置为非管理员帐户,该帐户无权修改 IIS 目录。

虽然您可以将运行时用户修改为管理员,但由于容器内的 IIS 被监控的方式,这会带来另一个问题。更改 web.config 会导致 IIS 重置池,docker 会将其视为进程崩溃并停止容器。

您应该将 web.config 作为容器构建的一部分进行修改,或者您应该直接使用环境变量,而不是在容器运行时尝试将它们写入 web.config。


推荐阅读