1

我在 Composite C1 中配置多个主机名时遇到问题。

背景:
我在 C1 中有两个网站:site1 和 site2。C1 安装主要用于 site1,并与主机 www.site1.com(和别名 site1.com)一起使用。
现在,我已将另一个站点 site2 添加到 C1。浏览到 site1.com/site2 时,我最终进入了 site2 网站。一切都好。
然后我尝试将另一个主机名 www.site2.com 添加到 URL 配置 -> 主机名。添加 www.site2.com 并浏览到 www.site2.com 后,我得到以下异常:“项目已添加。在字典中键入:''正在添加的键:''”

堆栈跟踪如下所示:

[ArgumentException:项目已被添加。字典中的键:'' 正在添加的键:''] System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) +9353115 System.Collections.Hashtable.Add(Object key, Object value) +11 Composite。 Core.Collections.Generic.Hashtable`2.Add(TKey key, TValue value) +105 Composite.Plugins.Routing.Pages.PageUrlBuilder.BuildUrlSet(IPage page, Guid parentPageId) +1935 Composite.Core.WebClient.Renderings.Page。 PageStructureInfo.BuildFolderPaths(SitemapBuildingData pagesData, IEnumerable`1 元素, IDictionary`2 urlToIdLookup, IPageUrlBuilder builder) +253 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.BuildMap(UrlSpace urlSpace) +2200 Composite.Core.WebClient.Renderings.Page .PageStructureInfo.GetMap(PublicationScope 发布范围,

有人对此有解决方案吗?

提前致谢...

更新:
更改 Dmitry Dzygin 建议的 dll 后,我得到以下堆栈跟踪:

[ArgumentException:项目已被添加。字典中的键:'' 正在添加的键:''] System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) +9353115 System.Collections.Hashtable.Add(Object key, Object value) +11 Composite。 Core.Collections.Generic.Hashtable`2.Add(TKey key, TValue value) in c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Core\Collections\Generic\Hashtable.cs:28 Composite.Plugins .Routing.Pages.PageUrlBuilder.BuildUrlSet(IPage page, Guid parentPageId) 在 c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Plugins\Routing\Pages\PageUrlBuilder.cs:190 Composite.Core.WebClient。 C 中的 Renderings.Page.PageStructureInfo.BuildFolderPaths(SitemapBuildingData pagesData, IEnumerable`1 元素, IDictionary`2 urlToIdLookup, IPageUrlBuilder builder):
4

1 回答 1

2

当 2 个 C1 页面收到相同的 url 或类似的东西时,看起来像是某种 url 冲突。作为一种解决方案,我建议您将调试版本 Composite.dll 文件和 Composite.pdf 文件复制到您网站的 /bin 文件夹中。您可以在发布页面 ( http://compositec1.codeplex.com/releases/view/80764 )的“其他可用下载部分”中的 Codeplex 中找到这些内容,然后您将在代码中看到导致它的确切行。一旦你有了它,我将能够修复它或添加一些代码断言/验证逻辑。

更新。

查看代码,似乎只有当您有 2 个网站的“UrlTitle”字段为空时才可能出现异常。通常有验证逻辑可以防止这种情况发生。尝试编辑两个网站的根目录,给它们一个不为空的“Url Title”字段,然后发布它们,这应该可以解决问题。如果错误仍然存​​在,我要么需要一个更好的重现(我无法用提供的重现它),或者如果你给我发一份网站的副本,我会调试它。

于 2012-03-06T11:12:07.950 回答