Web.config 在部署时未参数化

2024-06-26

我有一个 ASP MVC 应用程序,我正在通过 TeamCity 部署到 Intranet 服务器,并且我需要在部署时对一些 appSettings 进行参数化,以便对开发人员等隐藏客户端机密。

我的项目根目录中有Parameters.xml 文件,使用包构建的SetParameters.xml 正确包含所有这些参数及其默认值。但是,更改这些值(甚至使用 -setParam 将它们传递给 MSDeploy)不会导致部署的 web.config 发生任何更改。

当我更改 SetParameters.xml 文件中的值(据此正确传递给 MSDeploy)时,部署的 web.config 中的设置不会更改,并且虽然存在“详细:参数条目 'IIS Web 应用程序名称/1'”是适用的”日志中的条目(IIS Web 应用程序名称是另一个标准参数),但没有提及我的 appSettings 参数。

另外,当我使用 IIS 管理器导入应用程序时,它会询问我这些参数的值,但我也没有在详细日志中看到它们,并且 web.config 根本不会更新,除非确实有一些参数更改,在这种情况下,参数不会被替换。

我的parameters.xml 看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<parameters>
  <parameter name="PiwikToken" defaultValue="__PIWIKTOKEN__">
    <parameterEntry type="XMLFile" scope="\\web\.config$" match="/configuration/appSettings/add[@key='PiwikToken']/@value"/>
  </parameter>
  <parameter name="LoginClientSecret" defaultValue="__LOGINSECRET__">
    <parameterEntry type="XMLFile" scope="\\web\.config$" match="/configuration/appSettings/add[@key='LoginClientSecret']/@value"/>
  </parameter>
  <parameter name="SecondClientSecret" defaultValue="__SECONDSECRET__">
    <parameterEntry type="XMLFile" scope="\\web\.config$" match="/configuration/appSettings/add[@key='SecondClientSecret']/@value"/>
  </parameter>
</parameters>

我尝试过其他范围变化(“web.config$”、“web.config”、“\\web.config$”、“\\web\.config$”、“Portal\web.config$”.. .)并且它没有改变任何事情。 针对我的 web.config 测试的 XPath 表达式工作正常。

网络配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <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="LoginClientId" value="portalLocal" />
    <add key="RedirectAfterAuthUrl" value="https://localhost:44321/" />
    <add key="PiwikSiteId" value="12" />
    <add key="PiwikToken" value="__PIWIKTOKEN__" />
    <add key="LoginClientSecret" value="__LOGINSECRET__" />
    <add key="SecondClientSecret" value="__SECONDSECRET__" />
  </appSettings>
  <connectionStrings>
    <add name="appDB" connectionString="..." />
  </connectionStrings>
...

我检查过的其他事情:

  • MSDeploy 中的参数化已打开

.zip 包内生成的文件“parameters.xml”包含

<parameters>
  <parameter name="IIS Web Application Name" defaultValue="Portal" tags="IisApp">
    <parameterEntry kind="ProviderPath" scope="IisApp" match="^D:\\BuildAgent\\work\\fec2f9c37ed1ec8e\\Portal\\obj\\DEV\\Package\\PackageTmp$" />
    <parameterEntry kind="ProviderPath" scope="setAcl" match="^D:\\BuildAgent\\work\\fec2f9c37ed1ec8e\\Portal\\obj\\DEV\\Package\\PackageTmp$" />
  </parameter>
  <parameter name="Add write permission to App_Data Folder" description="Add write permission to App_Data folder" defaultValue="{IIS Web Application Name}/App_Data" tags="Hidden">
    <parameterEntry kind="ProviderPath" scope="setAcl" match="^D:\\BuildAgent\\work\\fec2f9c37ed1ec8e\\Portal\\obj\\DEV\\Package\\PackageTmp\\App_Data$" />
  </parameter>
  <parameter name="PiwikToken" defaultValue="__PIWIKTOKEN__" />
  <parameter name="LoginClientSecret" defaultValue="__LOGINSECRET__" />
  <parameter name="SecondClientSecret" defaultValue="__SECONDSECRET__" />
</parameters>

根据网上的各种消息来源,造成这种情况的常见原因是范围错误或匹配正则表达式错误,但我尝试了各种变体但没有成功。

如果有人对要尝试什么或可能的原因有任何想法,我很乐意进一步探索或尝试一下,但现在我已经花了几天时间在这上面,想不出还有什么可以尝试的。谢谢!

编辑:现在我已经使用 MVC 创建了一个新的 WebAPI 项目,仅添加了parameters.xml,将这些参数添加到了 web.config,但 web.config 在部署时仍然没有参数化。那么是某个 IIS 设置吗?

EDIT2:经过实验我发现生成的参数.xmlzip 包内部确实应该包含“match”和“scope”属性,但它们没有 - 因为当我重写 xml 使其包含具有正确匹配和范围的parameterEntry,并将其重新打包到 zip 中时,它就开始工作。

EDIT3:问题似乎是有名为"type",当它应该被命名时"kind"。现在我只是想知道,我第一次使用的例子是从哪里得到的......


问题是我的parameters.xml中有一个名为“type”的属性,而它应该被命名为“kind”。

发现感谢https://forums.iis.net/t/1177518.aspx https://forums.iis.net/t/1177518.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web.config 在部署时未参数化 的相关文章

  • 源文档中没有元素匹配 /configuration/system.web/authorization/

    转换我的 Web Config 时遇到下一个问题 源文档中没有元素与 configuration system web authorization allow roles WhateverGroupNameRenamedForProd 匹配
  • 用户 ASP.NET 运行于

    我有点困惑 ASP NET 如何在什么用户下运行 在 iis 7 5 和 6 0 上 一些我不清楚的用户帐户是 网络服务 IUSR AppPool 对不同用户的任何澄清以及安全考虑等都将不胜感激 总之 IIS 5 1 Windows XP
  • VSTS部署IIS应用程序winrm并更改appsettings.json

    我正在使用 部署 IIS 应用程序 winrm 任务在另一台计算机上部署 IIS 应用程序 此任务部署 zip 文件 在此 zip 中有一个 appsettings json 其变量以下划线开头和结尾 我需要替换每个环境的 appsetti
  • 生成Excel文件错误

    我在经典 ASP 中使用以下代码生成 Excel 文件 代码很简单并且有效 我在 Windows Vista x86 上的 IIS 7 0 下运行代码 两个问题 有一个奇怪的警告框 这是屏幕快照 http i27 tinypic com 2
  • 如何在ASP.NET服务器的web.config文件中使用Azure Pipeline中设置的环境变量?

    我打算在 ASP NET 中使用 Azure Pipeline 中的以下环境变量web config file
  • 如何从 Android 设备访问本地主机网站

    我的笔记本电脑中有一个 ASP net Web API 地址如下 本地主机 99949 我将其添加到 IIS Express 中 这样我就可以从同一 LAN 网络中的另一台计算机访问我的 Web Api 如下所示 Nimis 80 我可以从
  • 如何使用 TFS 发布管理将网站配置为自动启动?

    我发布这篇文章是为了记录我经过数小时痛苦的反复试验后实际发现的内容 我有一个需要 始终运行 的网站 因为在本例中 它有一个 Hangfire 作业 负责每 5 分钟启动一个计划任务 并且默认情况下 网站仅在收到第一个请求时启动 So 如何确
  • 我可以在 URL 中使用逗号吗?

    我通常使用 URL 重写将内容 ID 传递到我的网站 所以这 Foo 1 aspx 重写为 Foo aspx id 1 对于特定的应用程序 我需要将多个 ID 传递到单个页面 因此我重写了一些内容来接受这一点 Foo 1 2 3 4 5 a
  • 如何在本地主机上托管 Office 加载项?

    我是网络服务器的新手 我在 Windows 10 上安装了 Internet 信息服务 IIS 10 Express 我正在尝试开发 Office 加载项 以便将其托管在我使用的同一台计算机上 问题是如何在本地 Web 服务器中托管加载项
  • 如何在 ASP.Net Web API 中为特定控制器启用 Windows 身份验证

    我想知道是否有一种方法可以仅为特定 ASP Net Web API 控制器的特定操作启用 Windows 身份验证 我的 Web API Web 服务有几个具有多种操作的控制器 但只有一个控制器的一个操作需要 Windows 身份验证 此
  • 如何对具有相同文件的目录进行 HeatDirectory 2 次或更多次?

    我一直在 BeforeBuild 目标中的 WiX 安装程序项目中使用 HeatDirectory 任务来收集我们在客户端网络上部署的 Web 应用程序的文件 一直工作得很好 我现在想要部署第二组文件 这恰好是一些文档 并且它包含与先前 H
  • 将 MSBuild 集成到 Visual Studio 中

    我是一名运行 Visual Studio 2008 的独立开发人员 并正在研究 MSBuild 来改进我的构建过程 到目前为止 我发现的几乎所有教程都有大量有关编写构建文件的信息 然而 我在寻找如何将 MSBuild 集成到 Visual
  • 实体框架的提供程序连接字符串是否可以替换为 web.config 中已定义的数据库连接字符串?

    我在 web config 的 connectionString 部分中定义了一个数据库连接字符串 ApplicationServices 并有 3 个实体框架连接字符串 它们的提供程序连接字符串属性与 ApplicationService
  • git 中的 web.config 和 app.config 机器特定设置

    我们在不同的办公室有多个开发团队 他们需要为我们项目中的许多配置设置使用不同的值web config and app config files 我们希望使用一组合理的默认值来检查这些配置文件 这样通过检查 trunk master 分支 您
  • 如何在iis上部署React Next.JS?

    我有一个带有 Next Js 的 React Web 应用程序 我想将其上传到我的 IIS ftp 上 我应该复制 next 文件夹吗 如果是 为什么我在这种情况下会出错 错误截图 您可以在服务器上创建一个本地主机并将请求重定向到该本地主机
  • VS 2013 和 MSBuild

    我最近升级到 Visual Studio 2013 这在使用 MSBuild API 或带有命令行参数的可执行文件 进行外部构建时导致了连续问题 Issue 1使用 MSBuild 构建时 它不会生成单元测试所需的假程序集 这会导致构建失败
  • 我应该将 TeamCity 的 VCS 根指向哪里?

    我正在设置 TeamCity 我想知道应该使用什么作为 VCS 根 我的 svn 存储库位于http obfuscatedserver svn main MyProject1 http obfuscatedserver svn main M
  • Web.config 在部署时未参数化

    我有一个 ASP MVC 应用程序 我正在通过 TeamCity 部署到 Intranet 服务器 并且我需要在部署时对一些 appSettings 进行参数化 以便对开发人员等隐藏客户端机密 我的项目根目录中有Parameters xml
  • 无法加载动态库“php_wincache.dll”?

    因为我已经使用 ASP NET 所以我决定在 IIS 上使用 PHP 我使用 Wep PI 安装它 但是当我尝试安装 Composer 时 他失败并出现 PHP 设置错误 我尝试将 php ini 中的 extension dir 更改为绝
  • 在异步方法中使用时 HttpClient 标头被清空

    我正在使用 NET Framework 4 6 1 我的 Web api 中有一个控制器 其中有静态 HttpClient 来处理所有 http 请求 在 IIS 上托管我的应用程序后 大约每月一次 我的应用程序的所有传入请求都会出现以下异

随机推荐

  • 在 MySql 中查找周年纪念日是否在 n 天后到来

    我有一张写有周年纪念日的桌子 我想要一个查询 该查询返回接下来 10 天内即将到来的周年纪念日行 例如 birthdate 1965 10 10 1982 05 25 SELECT birthdate FROM Anniversaries
  • Ruby:如何将多个方法调用与“发送”链接在一起

    必须有一种内置的方法来做到这一点 对吧 class Object def send chain arr o self arr each a o o send a return o end end 我刚刚遇到了这个 它确实需要注入 def s
  • 从 ga.js 获取源和媒介

    我的网站上有一个时事通讯页面 我还想用它来捕获有关使用 Google Analytics 的用户的一些附加信息 使用getAll https developers google com analytics devguides collect
  • “未定义对 clrscr() 的引用;” [复制]

    这个问题在这里已经有答案了 include
  • llvm clang 编译器上的dynamic_cast失败

    我看到一个奇怪的失败dynamic cast正在返回NULL在 clang 编译器上 但相同的代码可以在 gcc 环境下运行 您能否指出根本原因是什么 之间可能有什么区别dynamic cast关于 llvm 和 gcc 我正在使用两个编译
  • NicEdit 数据不在 POST 中

    我确信我在这里错过了一些非常简单的东西 我已经搜索过 但似乎找不到答案 用这个简单的形式 我如何将 NicEdit 框中的内容发送到我的 HTTP POST 我得到的只是原始文本区域值而不是编辑后的版本 h2 Test Page h2
  • 三行无表 CSS 布局,中间行填充剩余空间

    我需要的是一个包含 3 行的基于像素高度的 div 最上面一行的高度根据内容而变化 底行具有固定高度 中间行填充任何剩余空间 一切都是宽度 100 我一直在努力构建一个 div 和基于 CSS 的布局几个小时 这让我从字面上看seconds
  • 绘图程序通用缩放算法

    我的 GUI 工具包 wxPython 提供了一些实现用户缩放系数的方法 但是质量不太好 我正在寻找有关如何创建缩放功能的想法 我知道这很复杂 我有一个代表我绘制的画布的位图 这显示在滚动窗口内 我预见到的问题 放大和平移画布时的性能 真实
  • 权限拒绝:开放提供商

    我创建了一个自定义内容提供程序 更多应用程序将访问该内容提供程序 我已在提供程序 AndroidManifest xml 文件中包含了权限标签 在第二个应用程序中 我包含了 use permissions 标签 但没有成功 Logcat 向
  • 如何在同一行实例化对象并调用setter?

    如果我有一个Employee具有默认构造函数的类 private String firstName public Employee 和一个二传手 public void setFirstName String firstName this
  • Laravel 带条件的连接查询

    我有4张桌子 User table id col1 col2 指定课程 table id user id course id approved 课程信息 table id parent id 课程家长 table id start date
  • 在实体框架中不使用 Dispose 或 using()

    我一路上正在编写一个网络应用程序并学习实体框架 如果我做错了什么 我很好奇 我在查询时没有使用过 dispose 或 using 语句 我的存储库示例 public User GetUserById int sessionId var us
  • 如何在运行时统一捕捉两个对象?

    这是 3D 模型 我想将另一个像这样的模型连接到顶部的银色连接器 并将另一个模型连接到右侧 所以请帮助我捕捉它 https i stack imgur com qoWwl png我想知道如何在运行时将两个 3D 对象对齐在一起 即 在 玩
  • Rails 会阻止删除子项,除非父项也被删除

    在 Ruby on Rails 4 中 假设一个父级有很多子级 当父级被删除时 子级也必须被删除 除此之外 除非是孤儿 否则不得删除该孩子 怎么做 我尝试了以下方法 class Parent lt ActiveRecord Base has
  • Android Path addArc 在canvas中两点之间

    我正在尝试在 android 中绘制弧线 在IOS中 用这个方法确实很简单 path addArcWithCenter radius startAngle endAngle clockwise 在android中 我有3个点 我的圆的中心
  • 函数“FBSDK_NOT_DESIGNATED_INITIALIZER”的隐式声明在 C99 中无效预期“)”

    我正在使用适用于 iOS 4 6 0 的 Facebook SDK 今天将 cocoapods 更新到 0 38 2 后遇到了上述错误 我不确定这个错误与 cocoapods 有什么关系 Error screenshot 我遇到过同样的问题
  • 从 Windows 选择声音并播放它们

    我有一个 WinForms 应用程序 该应用程序有一个 首选项 部分 用户可以在其中选择显示警报时播放哪些声音 是否可以有一个组合框 用户可以从 Windows 存储的声音中进行选择 例如 紧急停止 紧急蜂鸣 等 这些可以在 控制面板 gt
  • 如何增加工具条上按钮的大小?

    我已在表单中添加了一个工具条 在此工具条中 我在 添加工具条 按钮的帮助下有一些按钮 这些按钮的默认尺寸为 22 20 但我想将按钮的尺寸更改为 25 50 我通过更改尺寸属性在设计器中进行了更改 但它没有反映在我的表单中 即使我改变工具条
  • 排除任何字段中具有 NULL 值的行结果?

    我有一个像这样的简单选择 SELECT FROM table WHERE fk id 10020 它可以工作 但有一些字段为 NULL 没有模式所以做了 SELECT FROM table WHERE fk id 10020 AND NOT
  • Web.config 在部署时未参数化

    我有一个 ASP MVC 应用程序 我正在通过 TeamCity 部署到 Intranet 服务器 并且我需要在部署时对一些 appSettings 进行参数化 以便对开发人员等隐藏客户端机密 我的项目根目录中有Parameters xml