如何在Sitecore中使用配置文件提供程序?

时间:2012-02-20 22:47:52

标签: sitecore profile-provider

我希望使用Sitecore创建产品目录网站,以便用户将产品保存到他们使用网站时可以管理的自定义列表中。

这些列表可能包含数百个项目,因此使用标准自定义配置文件属性可能会失控,因此我认为使用外部数据源将是最佳方式。

是否有任何关于如何实现存储到外部sql数据库的自定义配置文件提供程序的示例?有更好的方法吗?

更新 为了扩展这一点。为了测试,我从这里下载了SQL Table Profile Provider示例:http://code.msdn.microsoft.com/Using-the-SQL-Table-4c220996 并运行使用。然后,我在Sitecore项目中添加了对此提供程序的引用。 在web.config中我有:

<profile defaultProvider="switcher" enabled="true" inherits="Sitecore.Security.UserProfile" >
        <providers>
            <clear />

           <add name="sql" type="System.Web.Profile.SqlProfileProvider"  connectionStringName="core" applicationName="sitecore" />

           <add name="TableProfileProvider"
                   type="Microsoft.Samples.SqlTableProfileProvider, SQLTableProfileProviderCS"
                   connectionStringName="myProfileConnString" table="aspnet_Profile2"
                   applicationName="/" />

            <add name="switcher" type="Sitecore.Security.SwitchingProfileProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/profile" />
        </providers>
        <properties>
            <clear />
            <add type="System.String" name="SC_UserData" />

        </properties>
    </profile>

并在switchingProviders下:

        <profile>
            <provider providerName="TableProfileProvider" storeFullNames="false" wildcard="%" domains="mydomain" />
            <provider providerName="sql" storeFullNames="true" wildcard="%" domains="*" />
        </profile>

和/Security/Domains.config:

<domain name="mydomain" ensureAnonymousUser="false"/>

如果我尝试使用与SQL Table Profile Provider示例项目相同的方法获取当前用户的配置文件并访问自定义属性,则自定义配置文件始终为null。

我必须在配置中遗漏一些东西。 任何建议将不胜感激。

2 个答案:

答案 0 :(得分:3)

你会发现this document很有趣。它包含有关提供程序系统如何工作的低级详细信息,并提供有关在Sitecore上下文中实现自定义提供程序的特殊建议。

更新:如果您只想使用外部存储中的某些属性扩展配置文件功能,我认为您不应该实现其他类型的提供程序。这些作品非常独立,但我自己并没有尝试过。

通常,您正在寻找的内容在Sitecore文档中被称为“部分配置文件功能”。我上面提到的文件包含以下注释:

  

重要默认情况下不支持在不同存储中拥有不同用户配置文件属性集的选项   Sitecore CMS安装。您必须安装Active Directory   模块并相应地配置它以使用此选项(请参阅   Active Directory模块文档)。

因此,可能使其工作的某些功能隐藏在AD模块中的某个位置,而不是默认的Sitecore CMS中。我不认为你应该配置 AD模块 - 否则它将毫无意义 - 只需安装它。

除了此配置文件提供程序仍然有点具体 - 请仔细查看 4.2配置文件提供程序实现建议部分。

最后,我鼓励你更深入地研究这个话题 - 它非常先进,可能需要进行一些调整,但你的场景似乎不可能用已经存在的东西来实现。

答案 1 :(得分:2)

如果我理解正确,我相信您可以在web.config此处自定义:

<profile defaultProvider="sql" enabled="true" inherits="Sitecore.Security.UserProfile, Sitecore.Kernel">
  <providers>
    <clear />
    <add name="sql" type="System.Web.Profile.SqlProfileProvider" connectionStringName="core" applicationName="sitecore" />
    <add name="switcher" type="Sitecore.Security.SwitchingProfileProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/profile" />
  </providers>
  ...

如您所见,提供程序是标准的ASP.NET配置文件提供程序(reference here) - 特别是SQL provider - 因此您应该能够遵循任何.NET指南,了解如何做到这一点。