У меня есть xml-файл, saml.config, который содержит некоторую информацию saml. Эта информация должна быть преобразована в сборки релизов, чтобы включать в себя производственные URL-адреса вместо разработки и размещения URL-адресов. В моей среде разработки и промежуточной стадии преобразование происходит отлично, в среде выпуска преобразование не выполняется.Преобразование пользовательских конфигурационных файлов AppHarbor
Я пробовал http://webconfigtransformationtester.apphb.com/, чтобы проверить трансформации, и они не применяются, но снова VS применяет их идеально.
Файл базы saml.config:
<?xml version="1.0"?>
<SAMLConfiguration xmlns="urn:componentspace:SAML:2.0:configuration">
<ServiceProvider Name="Portal.Web" AssertionConsumerServiceUrl="http://localhost:49462/SingleSignOn/ConsumeAssertion"/>
<PartnerIdentityProvider Name="MTMIdentity"
SignAuthnRequest="false"
WantResponseSigned="false"
WantAssertionSigned="false"
WantAssertionEncrypted="false"
SingleSignOnServiceUrl="https://identity.*********.com/SingleSignOn/"/>
</SAMLConfiguration>
Файл преобразования:
<?xml version="1.0" encoding="utf-8" ?>
<SAMLConfiguration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns="urn:componentspace:SAML:2.0:configuration">
<ServiceProvider Name="Portal.Web" AssertionConsumerServiceUrl="https://***********.com/SingleSignOn/ConsumeAssertion" xdt:Transform="SetAttributes" xdt:Locator="Match(Name)" />
</SAMLConfiguration>
Результат должен заменить LOCALHOST URL в AssertionConsumerServiceUrl поставщика услуг с ******* ****. com версия, но это не
<?xml version="1.0"?>
<SAMLConfiguration xmlns="urn:componentspace:SAML:2.0:configuration">
<ServiceProvider Name="Portal.Web" AssertionConsumerServiceUrl="http://localhost:49462/SingleSignOn/ConsumeAssertion" />
<PartnerIdentityProvider Name="MTMIdentity" SignAuthnRequest="false" WantResponseSigned="false" WantAssertionSigned="false" WantAssertionEncrypted="false" SingleSignOnServiceUrl="https://identity.********.com/SingleSignOn/" />
</SAMLConfiguration>
Почему не используется тестер преобразования преобразование?
EDIT:
Я хотел бы добавить, что я использую Аддин/NuGet пакет SlowCheetah для обработки преобразования локально, так и в нашей промежуточной среды.
Учитывая документацию (http://support.appharbor.com/kb/getting-started/managing-environments) утверждает
преобразование файла конфигурации поддерживается на всех .config файлов, имеющих соответствующий файл .release.config.
Я предполагаю, что AppHarbor может сделать это без SlowCheetah. Но опять же, инструмент WebConfigTransformTester не применяет это преобразование.
Итак, вопрос в том, как я могу применить это преобразование? Могу ли я использовать SlowCheetah в AppHarbor?
РЕДАКТИРОВАТЬ:
При дальнейшем исследовании, представляется, что AppHarbor НЕ применения преобразования к Web.Config, а также.
Мои Configs:
AppSettings в Интернете.Config
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="aspnet:UseHostHeaderForRequestUrl" value="true" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="Environment" value="Development" />
</appSettings>
Уведомление окружающей среды устанавливается в "Развитие"
Преобразование релиз:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="Environment" value="Release" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<customErrors defaultRedirect="GenericError.htm" mode="Off" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
</system.web>
</configuration>
Обратите внимание, окружающая среда заменяется на "Release"
В AppHarbor среды:
После развертывания в AppHarbor я загрузил сборку и проверил Web.Config, и у нее все еще есть параметр «Окружающая среда» в разделе «Разработка».
EDIT:
Я добавил действия к одному из моих контроллеров, считывающих Environment AppSetting и выходы к представлению, и к моему удивлению, это был «Release» !!!
Так что же дает? Содержимое «Загрузка сборки» не имеет трансформации на месте, но когда происходит запрос, он делает? Когда приложение AppHarbor применяет преобразование? Это во время выполнения, а не во время сборки?
EDIT:
Слышал назад от ребят AppHarbor и преобразование происходит на фактическое публикацию, так что даже если сборка имеет «Опубликованные сайты» папку, это еще не окончательный вывод из опубликовать действия.
Спасибо, Джо