Почему я получаю сообщение об ошибке «Нет атрибута« имя »существует для локатора совпадений» при публикации? - PullRequest
7 голосов
/ 03 ноября 2011

Я так запутался в этом. Я хочу использовать SQL Server на своем рабочем столе, когда я разрабатываю и использую живой SQL Server, когда я публикую свой проект. Я играю с вещами преобразования в Visual Studio 2010.

Когда я пытаюсь опубликовать свой проект, я получаю «Имя атрибута отсутствует» для локатора совпадений.

Мой файл Web.config содержит:

<connectionStrings>
    <add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=db" providerName="System.Data.SqlClient"/>
</connectionStrings>

<system.web>
    <sessionState mode="SQLServer" sqlConnectionString="Server=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=ASPState;Application Name=eGov" timeout="20" allowCustomSqlDatabase="true" />
</system.web>

Я все еще тестирую его, поэтому мой файл Web.Release.config содержит:

<connectionStrings>
    <add name="EFDbContext"
        connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=db" 
            providerName="System.Data.SqlClient" 
            xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
</connectionStrings>

<system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
    <sessionState mode="SQLServer"
        sqlConnectionString="Server=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=ASPState;Application Name=app"
        timeout="20" allowCustomSqlDatabase="true"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
</system.web>

Все, что я вижу в Интернете, только смущает меня. Любая помощь, чтобы заставить меня работать и работать?

Ответы [ 3 ]

11 голосов
/ 24 августа 2012

xdt:Locator="Match(name) означает, что система будет сопоставлять узлы для замены, используя тег name . Если у вас нет атрибута name , он не будет работать. У вас должен быть какой-то уникальный атрибут, чтобы использовать этот тип преобразования.

7 голосов
/ 03 ноября 2011

Doh!Проблема была в разделе sessionState.Должно быть:

<system.web>
    <sessionState mode="SQLServer"
        sqlConnectionString="Server=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=ASPState;Application Name=app"
        timeout="20" allowCustomSqlDatabase="true"
        xdt:Transform="SetAttributes" xdt:Locator="XPath(configuration/system.web/sessionState)" />
</system.web>
3 голосов
/ 04 августа 2016

Использование «name» в Match (name) для типичной настройки конфигурации, подобной следующей. Ключ в этом случае - «имя».

<add name="errorAddress" email="me@google.com" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />

Если ключ в вашей настройке - это что-то еще, то вам нужно использовать:

<add token="UserToken" value="23jkl2klk2j3kja9d8f" xdt:Transform="SetAttributes" xdt:Locator="Match(token)"/>
...