Преобразование Web.config не работает для элементов SessionState или OutputCache - PullRequest
0 голосов
/ 09 октября 2019

Моя исходная веб-конфигурация:

<sessionState mode="Custom" customProvider="SessionStateStore" timeout="5">
    <providers>
        <add name="SessionStateStore" throwOnError="false" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="localhost" accessKey="sessionstate" port="6379" ssl="false" applicationName="ezimanager" connectionTimeoutInMilliseconds="30000" operationTimeoutInMilliseconds="30000" />
    </providers>
</sessionState>
<caching>
    <outputCache defaultProvider="RedisOutputCache">
        <providers>
<add name="RedisOutputCache" type="Microsoft.Web.Redis.RedisOutputCacheProvider" host="localhost" accessKey="outputcache" port="6379" ssl="false" connectionTimeoutInMilliseconds="30000" operationTimeoutInMilliseconds="30000" />
        </providers>
    </outputCache>
</caching>

Я попытался xdt:Locator="XPath(/configuration/system.web/caching/outputCache)" для элемента и установить атрибуты для элементов добавления. Я пробовал xdt:Transform="SetAttributes(host,accessKey,ssl,port)" xdt:Locator="Match(name)" на элементах добавления, или даже просто xdt:Transform="SetAttributes"

Текущее преобразование выглядит так:

<system.web>
    <sessionState mode="Custom" customProvider="SessionStateStore" timeout="5">
        <providers>
            <add name="SessionStateStore"
                throwOnError="false"
                type="Microsoft.Web.Redis.RedisSessionStateProvider"
                host="actualHost"
                accessKey="actualAccessKey"
                port="6380"
                ssl="true"
                applicationName="ezimanager"
                connectionTimeoutInMilliseconds="30000"
                operationTimeoutInMilliseconds="30000"
                xdt:Transform="SetAttributes(host,accessKey,ssl,port)"
                xdt:Locator="Match(name)" />
            </providers>
        </sessionState>
    <caching>
        <outputCache defaultProvider="RedisOutputCache">
            <providers>
                <add name="RedisOutputCache"
                    type="Microsoft.Web.Redis.RedisOutputCacheProvider"
                    host="actualHost"
                    accessKey="actualAccessKey"
                    port="6380"
                    ssl="true"
                    connectionTimeoutInMilliseconds="30000"
                    operationTimeoutInMilliseconds="30000"
                    xdt:Transform="SetAttributes(host,accessKey,ssl,port)"
                    xdt:Locator="Match(name)"/>
            </providers>
        </outputCache>
    </caching>
</system.web>

Единственное отличие, на которое мне удалось повлиять, - это иногдапреобразование не удается полностью. В противном случае никаких изменений не происходит. Чего мне не хватает?

1 Ответ

0 голосов
/ 11 октября 2019

В нашем файле web.config есть элемент <location path="." inheritInChildApplications="false">, окружающий элемент system.web

...