2

saml情報を含むxmlファイルsaml.configがあります。この情報は、リリース ビルドで変換して、開発およびステージング URL の代わりに運用 URL を含める必要があります。私の開発環境とステージング環境では、変換は完全に行われますが、リリース環境では変換は行われません。

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>

結果は、サービス プロバイダーの AssertionConsumerServiceUrl の localhost url を ************.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>

変換テスターが変換を適用しないのはなぜですか?

編集:

ローカルおよびステージング環境で変換を処理するために、SlowCheetah アドイン / nuget パッケージを使用していることを付け加えておきます。

ドキュメント(http://support.appharbor.com/kb/getting-started/managing-environments)の状態を考慮する

構成ファイルの変換は、対応する .release.config ファイルを持つすべての .config ファイルでサポートされています。

AppHarbor は、SlowCheetah がなくてもこれを実行できると思います。ただし、WebConfigTransformTester ツールはこの変換を適用しません。

問題は、この変換をどのように適用できるかということです。AppHarbor で SlowCheetah を使用できますか?

編集:

さらに調査すると、AppHarbor は変換を Web.Config にも適用していないようです。

私の設定:

ここに画像の説明を入力

Web.Config の AppSettings

<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>

環境が「リリース」に置き換えられていることに注意してください

AppHarbor 環境:

ここに画像の説明を入力

AppHarbor にデプロイした後、ビルドをダウンロードして Web.Config を確認しましたが、「開発」の環境設定がまだ残っています。

編集:

Environment AppSetting を読み取ってビューに出力するコントローラーの 1 つにアクションを追加しましたが、驚いたことにそれは「リリース」でした!!!

それで、何が得られますか?「Download Build」コンテンツには変換が行われていませんが、リクエストが発生すると変換されますか? AppHarbor はいつ変換を適用しますか? ビルド時ではなく実行時ですか?

編集:

AppHarbor 関係者からの回答によると、変換は実際の発行時に行われるため、ビルドに「発行済み Web サイト」フォルダーがあっても、それは発行アクションの最終出力ではありません。

ありがとう、ジョー

4

2 に答える 2

2

この問題の解決策を (ご指摘のとおり、最新の変換アセンブリを使用して) 展開したばかりであり、それに応じてhttp://webconfigtransformationtester.apphb.com/を更新しました。これで、変換が期待どおりに適用されるはずです。

この問題を徹底的に調査していただき、ありがとうございます。

于 2013-04-29T23:59:40.423 に答える