Ошибка Sitecore: не удалось прочитать конфигурацию Sitecore

Я пытаюсь создать новый элемент Sitecore, используя решение Visual Studio. Но когда я вызываю главную базу данных, я получаю сообщение об ошибке Could Not read Sitecore Configuration. Я знаю, что этот вопрос уже задан, но предоставленное решение мне не ясно.

Может ли кто-нибудь указать мне, какие именно значения публикации могут быть переопределены моим файлом web.config, чтобы я мог его исправить.

Другое предлагаемое решение — предоставить пользователю IIS доступ к редактированию/изменению папки веб-сайта. Это не сработало для меня.

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);

        }
    }
}

person Ranjit choudhary    schedule 11.10.2016    source источник
comment
Можете ли вы добавить код, который вы используете, к вопросу?   -  person Mohammed Syam    schedule 11.10.2016
comment
Да, вот мой код:   -  person Ranjit choudhary    schedule 11.10.2016
comment
Я не вижу код.   -  person Mohammed Syam    schedule 11.10.2016
comment
Добавьте код к исходному вопросу. Добавление кода в комментарии делает его очень трудным для чтения.   -  person jammykam    schedule 11.10.2016
comment
Хорошо, вы можете проверить имя строки подключения к основной базе данных. Является ли она главной?   -  person Mohammed Syam    schedule 11.10.2016
comment
Теперь добавлено. Пожалуйста, посмотрите. и можно ли создать элемент с помощью файла .net cs? и я пытаюсь создать его внутри MyProject.Web .   -  person Ranjit choudhary    schedule 11.10.2016
comment
Да, его зовут хозяин. это ‹param connectionStringName=master /›   -  person Ranjit choudhary    schedule 11.10.2016
comment
Можете ли вы попробовать убрать эту строку из блокировщика безопасности: Sitecore.Data.Database masterDB = Factory.GetDatabase(master);   -  person Mohammed Syam    schedule 11.10.2016
comment
да конечно, позвольте мне попробовать. не работает. Та же ошибка   -  person Ranjit choudhary    schedule 11.10.2016
comment
не работает. Та же ошибка   -  person Ranjit choudhary    schedule 11.10.2016
comment
где вы запускаете этот код? Это в контексте sitecore?   -  person Vlad Iobagiu    schedule 11.10.2016
comment
Я запускаю его в своем веб-проекте. Это правильно?   -  person Ranjit choudhary    schedule 11.10.2016
comment
Каков ваш результат после просмотра yourinstance/sitecore/admin/showconfig.aspx   -  person Santiago Morla    schedule 11.10.2016
comment
возможность видеть страницу конфигурации   -  person Ranjit choudhary    schedule 11.10.2016


Ответы (2)


Проблема может возникнуть из-за того, что ваш web.config переопределяется по умолчанию ASP.net web.config после публикации решения из VS.

Можете ли вы сравнить файл web.config вашего веб-сайта с файлом из чистой установки sitecore?

person Andrey Bobrov    schedule 12.10.2016

Андрей прав. Проверьте файл 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, он ищет элемент в папке, если он существует, он обновит его, в противном случае он создаст его.

<!-- 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();
                }
            }
        }
    }
}
person Ali Khakpouri    schedule 28.02.2017