请问如何解决 Azure B2C UI 自定义架构验证错误?

How to resolve Azure B2C UI customization Schema Validation Error pls?

我已按照 https://docs.microsoft.com/en-us/azure/active-directory-b2c/customize-ui-with-html?pivots=b2c-custom-policy#4-modify-the-extensions-file

中提到的确切步骤进行操作

上传扩展策略时仍然出现以下错误。不确定,如何解决这个问题。有人可以帮我吗?谢谢

验证失败:在租户“devxyz.onmicrosoft.com”的策略“B2C_1A_TRUSTFRAMEWORKEXTENSIONS”中发现 1 个验证错误。在策略“B2C_1A_TRUSTFRAMEWORKEXTENSIONS 的第 52 行第 48 行发现架构验证错误]" 的租户“devxyz.onmicrosoft.com”:命名空间 'http://schemas.microsoft.com/online/cpim/schemas/2013/06' 中的元素 'ContentDefinition' 不能包含文本。预期的可能元素列表:命名空间 'http://schemas.microsoft.com/online/cpim/schemas/2013/06' 中的 'LoadUri, RecoveryUri, DataUri, Metadata, LocalizedResourcesReferences'。在租户“devxyz.onmicrosoft.com”的策略“B2C_1A_TRUSTFRAMEWORKEXTENSIONS”的第 52 行第 48 行发现架构验证错误:元素 'ContentDefinition' 在命名空间 'http://schemas.microsoft.com/online/cpim/schemas/2013/06' 中不能包含文本。预期的可能元素列表:命名空间 'http://schemas.microsoft.com/online/cpim/schemas/2013/06'.

中的 'LoadUri, RecoveryUri, DataUri, Metadata, LocalizedResourcesReferences'

扩展文件构建块部分内容如下图,

<BuildingBlocks>
<ClaimsTransformations>
  <ClaimsTransformation Id="CreateRandomPassword" TransformationMethod="CreateRandomString">
    <InputParameters>
      <InputParameter Id="randomGeneratorType" DataType="string" Value="GUID" />
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="newPassword" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>

<ContentDefinitions>
<ContentDefinition Id="api.error">
  <LoadUri>~/tenant/templates/AzureBlue/exception.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1</DataUri>
  <Metadata>
    <Item Key="DisplayName">Error page</Item>
  </Metadata>
</ContentDefinition>
<ContentDefinition Id="api.idpselections">
  <LoadUri>~/tenant/templates/AzureBlue/idpSelector.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1</DataUri>
  <Metadata>
    <Item Key="DisplayName">Idp selection page</Item>
    <Item Key="language.intro">Sign in</Item>
  </Metadata>
</ContentDefinition>
<ContentDefinition Id="api.idpselections.signup">
  <LoadUri>~/tenant/templates/AzureBlue/idpSelector.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1</DataUri>
  <Metadata>
    <Item Key="DisplayName">Idp selection page</Item>
    <Item Key="language.intro">Sign up</Item>
  </Metadata>
</ContentDefinition>
<ContentDefinition Id="api.signuporsignin">
  <LoadUri>~/tenant/templates/AzureBlue/unified.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5</DataUri>
  <Metadata>
    <Item Key="DisplayName">Signin and Signup</Item>
  </Metadata>
</ContentDefinition>
<ContentDefinition Id="api.selfasserted">s
  <LoadUri>https://myosssostg.blob.core.windows.net/devxyz-osssob2c/selfAsserted.html</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7</DataUri>
  <Metadata>
    <Item Key="DisplayName">Collect information from user page</Item>
  </Metadata>
</ContentDefinition>
<ContentDefinition Id="api.selfasserted.profileupdate">
  <LoadUri>~/tenant/templates/AzureBlue/selfAsserted.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7</DataUri>
  <Metadata>
    <Item Key="DisplayName">Collect information from user page</Item>
  </Metadata>
</ContentDefinition>
<ContentDefinition Id="api.localaccountsignup">
  <LoadUri>~/tenant/templates/AzureBlue/selfAsserted.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7</DataUri>
  <Metadata>
    <Item Key="DisplayName">Local account sign up page</Item>
  </Metadata>
</ContentDefinition>
<ContentDefinition Id="api.localaccountpasswordreset">
  <LoadUri>~/tenant/templates/AzureBlue/selfAsserted.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7</DataUri>
  <Metadata>
    <Item Key="DisplayName">Local account change password page</Item>
  </Metadata>
</ContentDefinition>
<ContentDefinition Id="api.socialccountsignup">
  <LoadUri>~/tenant/templates/AzureBlue/selfAsserted.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7</DataUri>
  <Metadata>
    <Item Key="DisplayName">Collect information from user page</Item>
  </Metadata>
</ContentDefinition>
<ContentDefinition Id="api.localaccountsignin">
  <LoadUri>~/tenant/templates/AzureBlue/selfAsserted.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7</DataUri>
  <Metadata>
    <Item Key="DisplayName">Collect information from user page</Item>
  </Metadata>
</ContentDefinition>

多了一个“s”:

<ContentDefinition Id="api.selfasserted">s