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

时间:2015-02-04 12:28:59

标签: xml sitecore sitecore7.1

我在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。我错过了什么吗?它在sitecore的预览模式下工作正常。

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:5)

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

如果仅配置虚拟文件夹并且将空字符串传递给DirectoryExists方法,则FileResolver处理器不会在args.Url.FilePath中接收文件路径。因此“价值不能为空”。奇怪的是,如果你没有传递虚拟文件夹,那么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支持报告问题。

答案 1 :(得分:5)

virtualFolder和physicalFolder需要匹配。这是一篇关于你要做什么的博客文章:

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