1

当我尝试上传以下声明时,它失败了:

<ClaimType Id="my-claim">
    <DisplayName>My Claim</DisplayName>
    <DataType>string</DataType>
    <UserHelpText>some text</UserHelpText>
    <UserInputType>TextBox</UserInputType>
    <Restriction>
        <Pattern RegularExpression="^[a-zA-Z0-9.!#$%&amp;'^_`{}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" HelpText="..." />
    </Restriction>
    <DefaultPartnerClaimTypes>
        <Protocol Name="OAuth2" PartnerClaimType="blah" />
        <Protocol Name="OpenIdConnect" PartnerClaimType="blah" />
    </DefaultPartnerClaimTypes>
</ClaimType>

出现以下错误:

无法上传政策。原因:验证失败:在租户“mytenant.onmicrosoft.com”的策略“B2C_1A_TRUSTFRAMEWORK_BUILDINGBLOCKS”中发现 1 个验证错误。

在租户“mytenant.onmicrosoft.com”的策略“B2C_1A_TRUSTFRAMEWORK_BUILDINGBLOCKS”的第 172 列第 10 行发现架构验证错误:命名空间中的元素“ClaimType”' http://schemas.microsoft.com/online/cpim/schemas/2013/ 06 '在命名空间' http://schemas.microsoft.com/online/cpim/schemas/2013/06 '中有无效的子元素'DefaultPartnerClaimTypes '。

预期的可能元素列表:命名空间“ http://schemas.microsoft.com/online/cpim/schemas/2013/06 ”中的“InputValidationReference, PredicateValidationReference ”。


如果我向上移动 一点,政策就会上传。 <DefaultPartnerClaimTypes>

<ClaimType Id="my-claim">
    <DisplayName>My Claim</DisplayName>
    <DataType>string</DataType>
    <DefaultPartnerClaimTypes>
        <Protocol Name="OAuth2" PartnerClaimType="blah" />
        <Protocol Name="OpenIdConnect" PartnerClaimType="blah" />
    </DefaultPartnerClaimTypes> 
    <UserHelpText>some text</UserHelpText>
    <UserInputType>TextBox</UserInputType>
    <Restriction>
        <Pattern RegularExpression="^[a-zA-Z0-9.!#$%&amp;'^_`{}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" HelpText="..." />
    </Restriction>
</ClaimType>

这对我来说似乎不“正确”。孩子的顺序<ClaimType>应该不重要吧?

XSD 文件中是否指定了该顺序?(我听说我可以配置 VS Code 来针对 XSD 验证我的 XML,我需要弄清楚如何做到这一点......)

4

1 回答 1

3

的,“ClaimType”类型要求子元素附加在声明的序列中,如XML 模式所定义;否则它不会通过模式验证。

这也适用于此 XML 模式定义的所有其他类型。

于 2018-03-29T21:47:18.963 回答