防止网络.在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。配置转换
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