2012-02-20 71 views
2

我正在尋找使用Sitecore創建產品目錄網站,該網站允許用戶將產品保存到使用網站時可以管理的自定義列表中。如何在Sitecore中使用配置文件提供程序?

這些列表可能包含數百個項目,因此使用標準自定義配置文件屬性可能會失去控制,因此我認爲使用外部數據源將是最佳方式。

是否有任何如何實現存儲到外部sql數據庫的自定義配置文件提供程序的示例?有一個更好的方法嗎?

UPDATE 擴展此項。爲了測試,我已經從這裏下載了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示例項目相同的方法訪問自定義屬性,則自定義配置文件始終爲空。

我必須在我的配置中丟失一些東西。 任何建議將不勝感激。

+0

您是指會員供應商? – 2012-02-21 02:14:05

+0

我的理解是有會員,角色和個人資料提供者。我很好地使用標準sitecore成員資格提供程序,我只想擴展配置文件信息以存儲默認asp.net屬性之外的自定義屬性,因爲我聽說在那裏存儲太多信息會導致性能問題。我是否需要使用自定義會員提供商來使配置文件提供程序正常工作? – Bevan 2012-02-21 03:03:56

回答

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指南。

+0

我已經試過了.net指南,並且已經在sitecore以外的示例中使用它,但是當我嘗試將其集成到sitecore中並使用配置文件提供程序切換器時(我認爲是必需的),它會打破現有sitecore用戶配置文件,並導致無法登錄到sitecore。我正在尋找更多關於與sitecore本身整合的信息。 – Bevan 2012-02-21 03:52:40

+0

嘗試使用Yan指定的文檔;-)。 – Younes 2012-02-21 07:23:32

3

你會發現this document有趣。它包含關於供應商系統如何工作的底層細節,以及在Sitecore上下文中實施自定義提供商的特別建議。

UPDATE:我不認爲你應該實現其他類型的提供者,如果你只是想擴展配置文件功能與外部存儲的一些屬性。這些作品是相當獨立的,但我沒有自己嘗試。

通常,您要查找的內容在Sitecore文檔中引用爲「部分配置文件功能」。我上面提到的文檔包含下面的註釋:

重要有不同的套不同的存儲用戶配置文件屬性的選項不被默認 Sitecore的CMS安裝支持。您必須安裝Active Directory 模塊並相應地進行配置才能使用此選項(請參閱 Active Directory模塊文檔)。

因此,可能有些功能使其工作隱藏在AD模塊的某處,而不是默認的Sitecore CMS。我不認爲你應該配置的AD模塊 - 這是毫無意義的,否則 - 只需安裝它。

除此配置文件提供程序仍保留一點特定 - 請仔細閱讀部分4.2配置文件提供程序實現建議

最後,我會鼓勵你深入研究這個主題 - 這是相當先進的,可能需要一些調整,但是你的方案似乎不可能用已經存在的東西來實現。

+0

謝謝,我已經完成了這個文檔,結果被破壞成員 – Bevan 2012-02-21 06:43:42

+0

「破碎的會員」是一個相當廣泛的描述...如果你更詳細地說明它是如何被破壞的話,那將會很棒 – 2012-02-21 06:45:03

+0

對不起。我瀏覽了文檔,但發現配置文件提供程序的實現並不像會員或角色提供程序那樣詳細。當我激活sitecore供應商切換臺時,sitecore安裝只會在嘗試執行與會員有關的任何操作時凍結。我顯然做錯了什麼...我是否需要實施會員提供商才能使配置文件提供程序正常工作? – Bevan 2012-02-21 11:02:18

相關問題