Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么IIS特定于站点的应用程序设置会消失?_C#_Asp.net_Iis_App Config_Webdeploy - Fatal编程技术网

C# 为什么IIS特定于站点的应用程序设置会消失?

C# 为什么IIS特定于站点的应用程序设置会消失?,c#,asp.net,iis,app-config,webdeploy,C#,Asp.net,Iis,App Config,Webdeploy,我正在Windows服务器上使用IIS托管一个ASP.NET C#网站。我使用Web Deploy发布到IIS服务器。我有一些应用程序设置,可以通过IIS的特定于站点的应用程序设置进行配置,其中大部分是我不希望在项目本身的app.config中使用纯文本的密码。每次发布时,我通过IIS创建的设置都会消失。我认为这篇文章写得太多了。我不知道如何让它们通过发布持久化。有人知道如何在Web Deploy发布期间保持IIS应用程序设置吗?不确定这是否解决了您的问题,但您可以尝试以下方法: 每个配置节都有

我正在Windows服务器上使用IIS托管一个ASP.NET C#网站。我使用Web Deploy发布到IIS服务器。我有一些应用程序设置,可以通过IIS的特定于站点的应用程序设置进行配置,其中大部分是我不希望在项目本身的app.config中使用纯文本的密码。每次发布时,我通过IIS创建的设置都会消失。我认为这篇文章写得太多了。我不知道如何让它们通过发布持久化。有人知道如何在Web Deploy发布期间保持IIS应用程序设置吗?

不确定这是否解决了您的问题,但您可以尝试以下方法:

每个配置节都有一个名为“configSource”的可选属性,用于 指向外部文件。因此,您可以分解web.config 分为多个文件,并相应地进行更新:

web.config:

...
<configuration>
    <appSettings/>
    <connectionStrings configSource="connectionStrings.config"/>
    <system.web>
...
。。。
...
ConnectionString.config:

<connectionStrings>
    <add name="defaultConnectionString" connectionString="..." providerName="System.Data.SqlClient" />
</connectionStrings>

然后,您可以将connectionString.config设置为不包含在项目的输出中,并在服务器上保持不变。

您还可以: -为部署创建新的生成配置 -为此生成配置添加web.config转换 -使用此生成配置部署
我通常就是这样做的

我可能错了,但我认为这是因为当您在IIS中进行这些更改时,它只需编辑web.config并添加它们就可以持久化这些更改。因此,当您重新部署时,会复制一个新的web.config,并覆盖您的设置。如何防止这种情况发生,我不确定……除非您可以对development web.config文件应用相同的更改,否则设置将继续被覆盖。您在未映射到开发生成输出文件夹的IIS应用中所做的更改在web部署期间将不会持久。我避免在机器之间自动部署web配置文件,因为这可能会导致问题。