值不能为空。参数名称:virtualPath - Sitecore

Value cannot be null. Parameter name: 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 时。我得到值不能为空。参数名称:虚拟路径。我错过了什么吗?它在 sitecore 的预览模式下工作正常。

如有任何建议,我们将不胜感激。

我实际上认为这是一个错误,除非这里有人可以纠正它。我 运行 在设置用于测试目的的演示站点时遇到了同样的问题,并通过添加物理文件夹解决了这个问题。

如果只配置了虚拟文件夹,则 FileResolver 处理器在 args.Url.FilePath 中没有收到任何文件路径,并将空字符串传递给 DirectoryExists 方法。因此 "value cannot be null"。 St运行ge 的事情是,如果您不传递虚拟文件夹,则 FilePath 将设置为“/”并且处理器不会中断。当您仅添加 virtualFolder 并将 physicalFolder 保留为默认值时,我会期望相同的行为。

简而言之:您可以向 physicalFolder 添加一个值,这应该可以修复它。

<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 支持报告问题。

虚拟文件夹和物理文件夹需要匹配。这是一篇关于您正在尝试做的事情的博客 post:

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