Значение не может быть нулевым. Имя параметра: virtualPath - Sitecore

Я создал новый сайт в разделе конфигурации сайта sitecore:

<site name="site2" hostName="website.local" virtualFolder="/oscar-dresses" physicalFolder="/" rootPath="/sitecore/content" targetHostName="website.local" startItem="/Oscar Dresses" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" />
<site name="website" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" hostName="website.local" targetHostName="website.local" startItem="/home" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" />

После того, как я добавил новый сайт в конфигурации, и когда я иду на http://website.local/oscar-dresses. Я получаю значение не может быть нулевым. Имя параметра: virtualPath. Я что-то пропустил? Работает нормально в режиме предварительного просмотра с сайта.

Любое предложение будет оценено.

2 ответа

Решение

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

Процессор FileResolver не получает путь к файлу в args.Url.FilePath, если настроена только виртуальная папка, и передает пустую строку в метод DirectoryExists. Следовательно, "значение не может быть нулевым". Странно то, что если вы не пропустите виртуальную папку, FilePath будет установлен на "/", и процессор не сломается. Я ожидал бы того же поведения, когда вы добавляете только virtualFolder и оставляете по-умолчанию физическую папку.

Итак, вкратце: вы можете добавить значение для физического файла, которое должно это исправить.

<site name="site2" hostName="website.local" virtualFolder="/oscar-dresses" physicalFolder="/oscar-dresses" rootPath="/sitecore/content" targetHostName="website.local" startItem="/Oscar Dresses" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" />

Вы также можете переопределить процессор FileResolver и добавить "/", если путь к файлу пуст.

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <pipelines>
      <httpRequestBegin>
        <processor type="SitecoreMvc75.Pipelines.FileResolver, SitecoreMvc75" patch:instead="processor[@type='Sitecore.Pipelines.HttpRequest.FileResolver, Sitecore.Kernel']"/>
      </httpRequestBegin>
    </pipelines>
  </sitecore>
</configuration>

Но мы обязательно должны сообщить о проблеме в службу поддержки Sitecore.

Виртуальные папки и физические папки должны совпадать. Вот запись в блоге о том, что вы пытаетесь сделать:

http://firebreaksice.com/sitecore-managed-sites-as-virtual-folders/

Другие вопросы по тегам