Проблема преобразования ASP.NET Web.Config - PullRequest
4 голосов
/ 13 марта 2011

Как я могу использовать преобразование 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 ]

7 голосов
/ 13 марта 2011

Один из этих двух должен работать (не проверено, но на основе документации Microsoft ):

<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>
3 голосов
/ 14 марта 2011

Не видя всей конфигурации, я не могу подтвердить, что это будет работать, но я бы попробовал добавить локатор, чтобы убедиться, что он захватывает эту строку и выполняет преобразование.

Так что вместо

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

Что будет совпадать с этим на этом пути

Попробуйте

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

, который явно выберет узел аутентификации в этом xpath, где mode = Forms, который должен давать 1 и только 1, соответствует механизму преобразования и выполнять замену.

Если это не сработает, я бы немного повернул вспять, чтобы увидеть, действительно ли оно преобразуется (в чем я сомневаюсь), изменив loginUrl и преобразование, чтобы посмотреть, выходит ли оно с другой стороны.

Скорее всего, вы где-то получаете ошибку преобразования и она просто не применяется.

...