2016-05-12 15 views
0

Im Versuch, ein Element programmatisch auf Sitecore zu schaffen, das ist, wie man Code wie folgt aussieht:Ausnahme auf Sitecores item.add programmatisch

   var db = Sitecore.Configuration.Factory.GetDatabase(dbName); 
       Item RepositoryItem = db.GetItem(repId, Sitecore.Context.Language); 

       TemplateID tid = new Sitecore.Data.TemplateID(new Sitecore.Data.ID(TemplateId); 
       Item newItem = RepositoryItem.Add(resource_name, tid); 
       newItem.Editing.BeginEdit(); 
       newItem[resourceConstants.IndustryFieldName] = industry; 
       newItem[resourceConstants.MarketFieldName] = markets; 

       newItem[I_BUResourceConstants.ResourceIdFieldName] = resource_id;   
       newItem.Editing.EndEdit(true); 

Wenn die Anwendung RepositoryItem.add im tut die folgende Fehlermeldung erhalten: Wert kann nicht null sein/Cache für Parameternamen.

Dies ist der Stacktrace

at Sitecore.Diagnostics.Assert.ArgumentNotNull(Object argument, String argumentName) 
    at Sitecore.Data.DataProviders.Sql.SqlDataProvider.ResolvePathRec(String[] path, PathCache cache, CallContext context) 
    at Sitecore.Data.DataProviders.DataProvider.ResolvePath(String itemPath, CallContext context, DataProviderCollection providers) 
    at Sitecore.Nexus.Data.DataCommands.ResolvePathCommand.Execute(String , Database) 
    at Sitecore.Data.Engines.EngineCommand`2.Execute() 
    at Sitecore.Data.Managers.ItemProvider.GetItem(String itemPath, Language language, Version version, Database database, SecurityCheck securityCheck) 
    at Sitecore.Data.Managers.PipelineBasedItemProvider.<>c__DisplayClass2f.<GetItem>b__2e() 
    at Sitecore.Data.Managers.PipelineBasedItemProvider.ExecuteAndReturnResult[TArgs,TResult](String pipelineName, String pipelineDomain, Func`1 pipelineArgsCreator, Func`1 fallbackResult) 
    at Sitecore.Data.Managers.ItemManager.GetItem(String itemPath, Language language, Version version, Database database) 
    at Sitecore.Globalization.DictionaryDomain.GetDomainDefinitionItem(Database database, String name) 
    at Sitecore.Globalization.DictionaryDomain.TryParse(String domainDefinition, Database database, DictionaryDomain& domain) 
    at Sitecore.Globalization.DictionaryDomain.GetDefaultDomain(Database database) 
    at Sitecore.Pipelines.GetTranslation.TryGetFromContextDatabase.Process(GetTranslationArgs args) 
    at (Object , Object[]) 
    at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) 
    at Sitecore.Globalization.Translate.TextByLanguage(String domainName, TranslateOptions options, String key, Language language, String defaultValue, Object[] parameters) 
    at Sitecore.Globalization.Translate.TextByLanguage(String key, Language language, String defaultValue, Object[] parameters) 
    at Sitecore.Globalization.Translate.TextByLanguage(String key, Language language, String defaultValue) 
    at Sitecore.Globalization.Translate.TextByLanguage(String key, Language language) 
    at Sitecore.Data.Items.ItemUtil.GetItemNameError(String name) 
    at Sitecore.Data.Items.ItemUtil.IsItemNameValid(String name) 
    at Sitecore.Data.Items.ItemUtil.ProposeValidItemName(String name, String defaultValue) 
    at Sitecore.Data.Items.ItemUtil.ProposeValidItemName(String name) 
    at resource_import.AddResourceToRepository(String resource_id, String product_solution, String markets, String industry, String product_type, String resource_name, String resource_link, String resource_type) in C:\project\resource.aspx.cs 
    at resource_import.butSubmit_Click(Object sender, EventArgs e) in C:\project\resource.aspx.cs 

ich auf Sitecore arbeiten 8.1 (rev. 151.207), habe ich den gleichen Code haben auf Sitecore 7.2 arbeiten

Antwort

0

Es ist wie Sie in einem ungültigen Elementnamen sind vorbei schaut . Es führt eine Überprüfung des Namens aus und gibt eine Fehlermeldung aus. Es versucht, die Fehlermeldung zu übersetzen, aber dann tritt ein anderer Fehler innerhalb des SQL-Datenproviders auf. Es sieht so aus, als könnte der Pfadcache nicht gefunden werden. Überprüfen Sie, ob Sie die Zwischenspeicherung mithilfe der Einstellung Caching.Enabled deaktiviert haben.

+0

Danke Ben, Sie hatten Recht, Bevor Sie mit dem Erstellen der Elemente beginnen, wissen Sie nicht, warum ich diesen CacheManager.Enabled = false hatte; Ich entfernte die Zeile, die es funktioniert – cmejiasr

+0

@cmejiasr, anstatt den CacheManager.Enable zu entfernen, wht setzen Sie es nicht auf wahr? Dies ist ein Leistungsgewinn für Ihr System –

+0

@HishaamNamooya Diese Konfiguration ist standardmäßig aktiviert? Weil, wenn ja, muss ich es nicht wieder aktivieren! – cmejiasr