3

標準のVisualStudioWeb.config変換を使用して、microsoft.identitymodel構成セクションのaudienceUris要素とfederatedAuthentication要素をどのように変換しますか?

開発環境では、すべてのサブドメインに「-dev」と特別なローカルホストポート番号を後置します(例:realm = "https://client-dev.domain.com:444")。今日、メインのweb.configはこれを反映していますが、理想的にはこの設定をWeb.Debug.configに移動し、Web.Release.configで、「-dev」の接尾辞とローカルポート設定。ただし、Web.Debug.Config内のmicrosoft.identitymodel要素にxdt:Transform = "Replace"を配置しようとすると、次の警告が表示されます。

The 'http://schemas.microsoft.com/XML-Document-Transform:transform' attribute is not declared.

そしてもちろん、実行時の失敗(たとえば、servicecertificateを見つけることができない)。

microsoft.identitymodelのセクションは次のとおりです。

<configuration>
  <configSections>
    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </configSections>

  <microsoft.identityModel>
    <service>
      <applicationService>
        <claimTypeRequired>
          <claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier" optional="false" />
          <claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" optional="false" />
        </claimTypeRequired>
      </applicationService>
      <serviceCertificate>
        <certificateReference x509FindType="FindByThumbprint" findValue="NNNNNNNNNN" storeLocation="LocalMachine" storeName="My" />
      </serviceCertificate>
      <certificateValidation certificateValidationMode="None" />
      <audienceUris>
        <add value="https://url/" />
      </audienceUris>
      <federatedAuthentication>
        <wsFederation passiveRedirectEnabled="true" issuer="https://url/" realm="https://url/" requireHttps="true" />
        <cookieHandler requireSsl="true" />
      </federatedAuthentication>
      <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <trustedIssuers>
          <add thumbprint="NNNNNNNNNN" name="https://url/" />
        </trustedIssuers>
      </issuerNameRegistry>
    </service>
  </microsoft.identityModel>
<configuration>

動作しない既存のソリューション:

1)ここでも同じ問題が発生しましたが、適切な対応がありません。RemoveAllとInsertが機能しません: microsoft.identityModelのWeb構成変換-'http://schemas.microsoft.com/XML-Document-Transform'属性が宣言されていません

2)また、このスレッドで提案されているように名前空間を操作しようとしましたが、これも機能しません: http ://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/9ededb66-3e34-4bba- 8e20-a2cc6025f0f9

3)configSourceは有望に見えましたが、microsoft.identitymodel要素で指定された場合も機能します。私は得る:

Warning 1   The 'configSource' attribute is not declared.

http://blog.andreloker.de/post/2008/06/16/Keep-your-config-clean-with-external-config-files.aspx

どんな助けでもありがたいです!ありがとう。

4

1 に答える 1

1

多くの試行錯誤の末、私はLoren HalvorsonによるXMLPreProcessを使用して、各プロジェクトのpre-Buildイベントの一部としてTemplateWeb.configから正しいWeb.configを自動生成することにしました。

Visual Studioのこの試みが開発者のために機能することを望んでいましたが、残念ながら、時間はお金であり、私が先に進む時間です。言うまでもなく、変換はサイトを公開したときにのみ発生するため、SQLAzureSDKでも機能しません。最新のAzureSDKでは、これは当てはまらないため、変換も機能しなくなりました。嬉しい!

これは、すべてのASP.NET開発者にとってなくてはならない優れたツールへのリンクです。

http://xmlpreprocess.codeplex.com/

于 2012-10-03T05:35:45.810 に答える