2016-10-11 17 views
1

Visual Studioソリューションを使用して、新しいSitecoreアイテムを作成しようとしています。しかし、masterデータベースを呼び出すとエラーCould Not read Sitecore Configurationが出ます。私はこの質問はすでに尋ねられているが、提供された解決策は私には分かりません。Sitecoreエラー:Sitecore設定を読み取れませんでした

誰でも、私が修正できるように、どのweb.configファイルでどの公開値が上書きされるかを教えてください。

提供されている別の解決策は、WebサイトフォルダのIISユーザーに対して編集/変更アクセス権を与えることです。それは私のために働いていませんでした。あなたはあなたのソリューションは、VSから公開した後、あなたのweb.configファイルがデフォルトASP.net web.configファイルによって上書きされているため、問題が発生する可能性があります

public class MyItem 
{ 
    public void CreateItem() 
    { 
     using (new Sitecore.SecurityModel.SecurityDisabler()) 
     { 
      Sitecore.Data.Database masterDB = Factory.GetDatabase("master");    
      Item parentItem = masterDB.GetItem(new ID("{140DC116-E743-4C02-9F08-CB73151A5163}")); 
      TemplateItem template = masterDB.GetTemplate(new ID("{C9B284A6-0427-4296-8217-E8A3F728D8F0}")); 

      parentItem.Add("RanjitAsset1", template); 

     } 
    } 
} 
+2

質問に使用しているコードを追加できますか? –

+0

はい、ここに私のコードです: –

+0

私はコードを見ることができません。 –

答えて

0

あなたのウェブサイトweb.configファイルをクリーンサイトコアインストールのファイルと比較できますか?

0

Andreyは正しいです。 web.configを確認すると、Visual Studioから公開するときに上書きされている可能性があります。

<site 
     name="website" 
     virtualFolder="/" 
     physicalFolder="/" 
     rootPath="/sitecore/content" 
     startItem="/home" 
     language="en" 
     **database="web"** 
     domain="extranet" 
     allowDebug="true" 
     cacheHtml="true" 
     htmlCacheSize="10MB" 
     enablePreview="true" 
     enableDebugger="true" /> 

データベース名を切り替える場合は、デスクトップモードを使用できます。または、クエリ文字列のパラメータとして?sc_content = [database]を追加します。

APIを使用すると、SoteContextを使用してコンテキストを切り替えて、Itemを取得できます。また、SelectSingleItemメソッドを使用して、フォルダ内のItemを探します。存在する場合は更新し、そうでなければ作成します。

<!-- language: lang-cs --> 
public class MyItem 
{ 
    public void CreateItem() 
    { 
     SiteContext targetSiteContext = SiteContext.GetSite(sitename); 
     using (var context = new SiteContextSwitcher(targetSiteContext)) 
     { 
      using (new Sitecore.SecurityModel.SecurityDisabler()) 
      { 
       // do something on the new site context 
       var title = @"You title goes here"; 
       var parentItem = Sitecore.Context.Database.GetItem(new Data.ID("{140DC116-E743-4C02-9F08-CB73151A5163}")); 
       var template = Sitecore.Context.Database.GetTemplate(new Data.ID("{C9B284A6-0427-4296-8217-E8A3F728D8F0}")); 
       var newItem = Sitecore.Context.Database.SelectSingleItem(parentItem.Paths.Path + "//*[@@name='" + title + "']") ?? template.CreateItemFrom(title, parentItem); 
       try 
       { 
        newItem.Editing.BeginEdit(); 
        newItem.Fields["NewsTitle"].Value = title; 
        //Rest of the fields go here 
        newItem.Editing.AcceptChanges(); 
        newItem.Editing.EndEdit(); 
       } 
       catch (Exception ex) 
       { 
        Diagnostics.Log.Error("Crawl Error: ", ex); 
        newItem.Editing.CancelEdit(); 
       } 
      } 
     } 
    } 
} 
関連する問題