防止网络.在web部署时更改配置

本文关键字:配置 部署 web 网络 | 更新日期: 2023-09-27 18:08:50

我们有一个用于c#开发的应用程序的web部署包,当安装在web IIS中时。Config中有几个设置,例如:

<appSettings>
  <add key="webpages:Version" value="3.0.0.0"/>
  <add key="webpages:Enabled" value="false"/>
  <add key="ClientValidationEnabled" value="true"/>
  <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  <add key="ReportFiles" value="http://localhost/ReportTemp/"/>
</appSettings>

一个设置可能会在它部署的每个站点上被更改(例如上面的ReportFiles),然后如果应用程序有更新,我们将安装最新的web部署包。

不幸的是,这将覆盖所有可能更改的设置,恢复为默认设置。这意味着每次我们更新应用程序时,我们都必须获取web的副本。配置,做更新,然后复制回来。

有办法停止网络吗?配置一旦创建就会更新?或者在web部署期间允许安装程序查看现有设置并决定是否保留?

防止网络.在web部署时更改配置

看一下Web。配置转换

https://msdn.microsoft.com/en-us/library/dd465318 (v = vs.100) . aspx

如何防止'Publish Web'从覆盖配置文件?

我不记得从什么地方偷来的了。把这个放进新的盒子里。目标文件,并将<Import Project="blah.targets" />添加到<Project>下的csproj文件中。它将使webdeploy不覆盖现有的web.config。

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <!--These UseMsDeployExe and AfterAddIisSettingAndFileContentsToSourceManifest are relevant to the msdeploy, perhaps otherwise in the pubxml files-->
    <PropertyGroup>
        <UseMsDeployExe>true</UseMsDeployExe>
        <AfterAddIisSettingAndFileContentsToSourceManifest>OnAfterAddIisSettingAndFileContentsToSourceManifest</AfterAddIisSettingAndFileContentsToSourceManifest>
    </PropertyGroup>    
    <!-- We do not want to OVERWRITE the web.config file if it is present at the destination -->
    <!-- We also don't want to delete it so we can't just exclude it -->
    <Target Name="ExcludeWebConfig">
        <Message Text="Excluding Web Config From Publish.  Be sure to manually deploy any new settings." Importance="high" />
        <ItemGroup>
            <MsDeploySkipRules Include="SkipWebConfigDelete">
                <SkipAction>Delete</SkipAction>
                <ObjectName>filePath</ObjectName>
                <AbsolutePath>$(_DestinationContentPath)''Web.config</AbsolutePath>
                <Apply>Destination</Apply>
            </MsDeploySkipRules>
            <MsDeploySkipRules Include="SkipWebConfigUpdate">
                <SkipAction>Update</SkipAction>
                <ObjectName>filePath</ObjectName>
                <AbsolutePath>$(_DestinationContentPath)''Web.config</AbsolutePath>
                <Apply>Destination</Apply>
            </MsDeploySkipRules>
        </ItemGroup>
    </Target>
    <Target Name="OnAfterAddIisSettingAndFileContentsToSourceManifest" DependsOnTargets="ExcludeWebConfig" />
</Project>

这些答案是更正确和面向未来的,但是如果你想从visual studio做一个快速和肮脏的web部署而跳过web。配置或其他文件,只需先点击"预览"按钮,然后在点击发布之前取消选中列表中不想要的文件。

我认为你应该这样做与数据库。将报表文件保存在基于某个id(如客户端id或任何东西)的表中,并从那里使用。

将Build Action从Content更改为None,并确保Copy to Dir..设置为不复制。对于appsettings.json

也是如此