Ich habe eine XSLT-Datei, die zum Schreiben in meine Web.Config als Teil eines Build-Prozesses für Umbraco verwendet wird. Das Schreiben von Dingen wie dem "umbracoConfigurationStatus" -Wert funktioniert genauso gut wie das Schreiben eines neuen Profilmitgliedschaftsteils.Warum sollte das XSLT-Update für Web.Config teilweise fehlschlagen?
Der Teil, der versucht, einen UmbracoMembershipProvider-Abschnitt zu aktualisieren oder zu erstellen, verursacht jedoch alle Arten von Kummer. Es wird nicht aktualisiert oder geschrieben. Was vermisse ich?
Hier ist der Großteil der XSLT-Datei:
<xsl:template match="/configuration/appSettings/add[@key='umbracoConfigurationStatus']/@value">
<xsl:attribute name="value">4.7.1.1</xsl:attribute>
</xsl:template>
<xsl:template match="/configuration/system.web">
<xsl:copy>
<xsl:call-template name="copy-children" />
<xsl:element name="profile">
<xsl:attribute name="defaultProvider">
<xsl:text>UmbracoMemberProfileProvider</xsl:text>
</xsl:attribute>
<xsl:attribute name="enabled">
<xsl:text>true</xsl:text>
</xsl:attribute>
<xsl:attribute name="inherits">
<xsl:text>umbraco.cms.businesslogic.member.MemberProfile</xsl:text>
</xsl:attribute>
<xsl:element name="providers">
<xsl:element name="clear" />
<xsl:element name="add">
<xsl:attribute name="name">
<xsl:text>UmbracoMemberProfileProvider</xsl:text>
</xsl:attribute>
<xsl:attribute name="type">
<xsl:text>umbraco.providers.members.UmbracoProfileProvider, umbraco.providers</xsl:text>
</xsl:attribute>
</xsl:element>
</xsl:element>
<xsl:element name="properties">
<xsl:element name="clear" />
<xsl:element name="add">
<xsl:attribute name="name">
<xsl:text>auth_guid</xsl:text>
</xsl:attribute>
<xsl:attribute name="allowAnonymous">
<xsl:text>false</xsl:text>
</xsl:attribute>
<xsl:attribute name="provider">
<xsl:text>UmbracoMemberProfileProvider</xsl:text>
</xsl:attribute>
<xsl:attribute name="type">
<xsl:text>System.String</xsl:text>
</xsl:attribute>
</xsl:element>
<xsl:element name="add">
<xsl:attribute name="name">
<xsl:text>firstName</xsl:text>
</xsl:attribute>
<xsl:attribute name="allowAnonymous">
<xsl:text>false</xsl:text>
</xsl:attribute>
<xsl:attribute name="provider">
<xsl:text>UmbracoMemberProfileProvider</xsl:text>
</xsl:attribute>
<xsl:attribute name="type">
<xsl:text>System.String</xsl:text>
</xsl:attribute>
</xsl:element>
<xsl:element name="add">
<xsl:attribute name="name">
<xsl:text>lastName</xsl:text>
</xsl:attribute>
<xsl:attribute name="allowAnonymous">
<xsl:text>false</xsl:text>
</xsl:attribute>
<xsl:attribute name="provider">
<xsl:text>UmbracoMemberProfileProvider</xsl:text>
</xsl:attribute>
<xsl:attribute name="type">
<xsl:text>System.String</xsl:text>
</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:copy>
</xsl:template>
<xsl:template name="copy-children">
<xsl:copy-of select="./*"/>
</xsl:template>
<xsl:template match="/configuration/system.web/membership/providers">
<xsl:copy>
<xsl:call-template name="copy-children" />
<xsl:element name="add">
<xsl:attribute name="name">
<xsl:text>UmbracoMembershipProvider</xsl:text>
</xsl:attribute>
<xsl:attribute name="type">
<xsl:text>umbraco.providers.members.UmbracoMembershipProvider</xsl:text>
</xsl:attribute>
<xsl:attribute name="enablePasswordRetrieval">
<xsl:text>false</xsl:text>
</xsl:attribute>
<xsl:attribute name="enablePasswordReset">
<xsl:text>false</xsl:text>
</xsl:attribute>
<xsl:attribute name="requiresQuestionAndAnswer">
<xsl:text>false</xsl:text>
</xsl:attribute>
<xsl:attribute name="defaultMemberTypeAlias">
<xsl:text>SiteMember</xsl:text>
</xsl:attribute>
<xsl:attribute name="umbracoApprovePropertyTypeAlias">
<xsl:text>isApproved</xsl:text>
</xsl:attribute>
<xsl:attribute name="umbracoLockPropertyTypeAlias">
<xsl:text>isLocked</xsl:text>
</xsl:attribute>
<xsl:attribute name="passwordFormat">
<xsl:text>Hashed</xsl:text>
</xsl:attribute>
</xsl:element>
</xsl:copy>
</xsl:template>
<!-- Default templates to match anything else -->
<xsl:template match="@*">
<xsl:copy/>
</xsl:template>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
Der Zustand, den ich zu bekommen bin versucht:
<add name="UmbracoMembershipProvider" type="umbraco.providers.members.UmbracoMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="SiteMember" umbracoApprovePropertyTypeAlias="isApproved" umbracoLockPropertyTypeAlias="isLocked" passwordFormat="Hashed" />
Gut aussehende Lösung, hat aber immer noch nicht funktioniert. Was könnte diese Linie blockieren? –
Es ist ein bisschen schwierig zu sagen, ohne Ihre web.config-Datei zu sehen –
Ich habe die vollständige Datei hier hinzugefügt: http://pastebin.com/juKagtxv. Interessanterweise, wenn ich den Abschnitt entferne, der mit '' beginnt, ist die Aktualisierung erfolgreich, aber nur bis zu einem Punkt, der einen Fehler zurückgibt: "Attribute und Namespace-Knoten können nicht hinzugefügt werden zu dem Elternelement, nachdem ein Text-, Kommentar-, Pi oder Unterelementknoten bereits hinzugefügt wurde. " –