ASP.NET Web.Config转换问题

时间:2011-03-13 15:44:55

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

如何使用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>

2 个答案:

答案 0 :(得分:7)

这两个中的一个应该有效(未经测试,但基于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>

答案 1 :(得分:3)

如果没有看到整个配置,我无法确认这是否可行,但我会尝试添加一个定位器,以确保它抓住该行并进行转换。

所以而不仅仅是

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

在此路径中将匹配此类内容

尝试

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

将明确地在该xpath上获取一个auth节点,其中mode = Forms,它应该与变换引擎产生1和1匹配并进行替换。

如果这不起作用,我会反转一下,看它是否完全转换(我怀疑),通过改变loginUrl ni转换只是为了看看它是否出现在另一边。

你有可能在某个地方遇到转换错误而且它只是没有应用。