【问题标题】:ASP.NET Web.Config Transformation IssueASP.NET Web.Config 转换问题
【发布时间】:2026-01-28 02:55:01
【问题描述】:

如何使用web.config 转换将域属性包含在我的产品web.config 中?

我的基地web.config 中有以下内容。

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>

我尝试在我的web.prod.config 中使用以下内容,但在我发布项目时它没有添加属性。

<authentication mode="Forms" xdt:Transform="Replace">
    <forms loginUrl="~/Account/Login.aspx" timeout="2880" domain=".mydomain.com" />
</authentication>

我希望输出如下。

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login.aspx" timeout="2880" domain=".mydomain.com"/>
</authentication>

【问题讨论】:

  • 这与您的问题无关,但域名真的是=".mydomain.com" 而不是="mydomain.com"...期间应该在那里吗?
  • 谢谢,是的,点应该在那里,这将满足子域的需求,但还是非常感谢。

标签: .net asp.net authentication web-config web-config-transform


【解决方案1】:

这两个应该可以工作(未经测试,但基于Microsoft's documentation):

<system.web>
  <authentication mode="Forms" xdt:Transform="Replace" xdt:Locator="Match(forms)">
    <forms loginUrl="~/Account/Login.aspx" timeout="2880" domain=".mydomain.com" />
  </authentication>
</system.web>

<system.web>
  <authentication mode="Forms">
    <forms domain=".mydomain.com" xdt:Transform="SetAttributes(domain)" />
  </authentication>
</system.web>

【讨论】:

  • 抱歉延迟回复。今晚我将尝试您的解决方案并让您知道。非常感谢您的帮助。
  • 您可以使用此工具测试配置转换:webconfigtransformationtester.apphb.com
  • 另外,这需要在
  • @kmdsax 你是我的英雄,这样做之后,上面的答案就奏效了。 John Pick 您能否更新您的 wanswer 以包含此重要细节?
【解决方案2】:

在没有看到整个配置的情况下,我无法确认这会起作用,但我会尝试添加一个定位器以确保它抓住那条线并进行转换。

所以不仅仅是

<authentication mode="Forms" xdt:Transform="Replace">

这将匹配此路径中的任何内容

试试

<authentication mode="Forms" xdt:Transform="Replace" xdt:Locator="Match(mode)"> 

这将在该 xpath 处显式选取一个身份验证节点,其中 mode = Forms,它应该产生 1 并且只有 1 与转换引擎匹配并进行替换。

如果这不起作用,我会稍微反转一下,看看它是否完全转换(我怀疑),通过更改 loginUrl ni 来查看它是否从另一侧出来。

您可能在某处遇到转换错误,而它只是不适用。

【讨论】:

  • 抱歉延迟回复。今晚我将尝试您的解决方案并让您知道。非常感谢您的帮助。