处理复合C1中的多个主机名时出现异常



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

背景:
我在C1有两个网站:site1和site2。C1安装主要用于site1,并与主机www.site1.com(别名为site1.com)一起工作。
现在我已经将另一个站点site2添加到C1。当我浏览site1.com/site2时,我最终进入了site2网站。所有的罚款。
然后我尝试添加另一个主机名www.site2.com到URL Configuration -> Hostnames。添加www.site2.com并浏览到www.site2.com后,我得到以下异常:"项目已被添加。字典中的键:"正在添加的键:" "

堆栈跟踪如下:

[ArgumentException: Item已经被添加。字典中的键:"正在添加的键:"]System.Collections.Hashtable。插入(对象键,对象值,布尔值添加)+9353115System.Collections.Hashtable。添加(对象键,对象值)+11Composite.Core.Collections.Generic.Hashtable"2。添加(TKey key, TValue value) +105Composite.Plugins.Routing.Pages.PageUrlBuilder。BuildUrlSet(page page, Guid parentPageId) +1935Composite.Core.WebClient.Renderings.Page.PageStructureInfo。BuildFolderPaths(SitemapBuildingData pagesData, IEnumerable ' 1个元素,字典' 2 urlToIdLookup, IPageUrlBuilder builder) +253Composite.Core.WebClient.Renderings.Page.PageStructureInfo。BuildMap(UrlSpace UrlSpace) +2200Composite.Core.WebClient.Renderings.Page.PageStructureInfo。GetMap(PublicationScope PublicationScope, CultureInfo localizationScope, UrlSpace UrlSpace) +482Composite.Core.WebClient.Renderings.Page.PageStructureInfo。GetPageUrlBuilder(PublicationScope PublicationScope, CultureInfo localizationScope, UrlSpace UrlSpace) +9Composite.Plugins.Routing.Pages.DefaultPageUrlProvider。ParseUrl(String relativeUrl, UrlSpace UrlSpace, urlKind & urlKind) +311 Composite.Plugins.Routing.Pages.DefaultPageUrlProvider。ParseUrl(String absoluteUrl, urlKind & urlKind) +306 Composite.Core.Routing.Pages.C1PageRoute。GetRouteData(HttpContextBase上下文)+156System.Web.Routing.RouteCollection。GetRouteData(HttpContextBase httpContext) +287System.Web.Routing.UrlRoutingModule。PostResolveRequestCache(HttpContextBase context) +60System.Web.Routing.UrlRoutingModule。OnApplicationPostResolveRequestCache(对象发送方,EventArgs e) +86System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () + 148System.Web.HttpApplication。ExecuteStep(IExecutionStep step, Boolean& completedsynchronsynchronous) +75

有人有解决这个问题的办法吗?

Thanks in advance…

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

[ArgumentException: Item已经被添加。字典中的键:"正在添加的键:"]System.Collections.Hashtable。插入(对象键,对象值,布尔值添加)+9353115System.Collections.Hashtable。添加(对象键,对象值)+11Composite.Core.Collections.Generic.Hashtable"2。Add(TKey key, TValue value) in c:Builds1FrejaCodeplexBuildSourcesPublicCompositeCoreCollectionsGenericHashtable.cs:28Composite.Plugins.Routing.Pages.PageUrlBuilder。buildlset (page page, Guid parentPageId) in c:Builds1FrejaCodeplexBuildSourcesPublicCompositePluginsRoutingPagesPageUrlBuilder.cs:190Composite.Core.WebClient.Renderings.Page.PageStructureInfo。BuildFolderPaths(SitemapBuildingData pagesData, IEnumerable ' 1个元素,字典' 2 urlToIdLookup, IPageUrlBuilder builder)在c:Builds1FrejaCodeplexBuildSourcesPublicCompositeCoreWebClientRenderingsPagePageStructureInfo.cs:630Composite.Core.WebClient.Renderings.Page.PageStructureInfo。BuildFolderPaths(SitemapBuildingData pagesData, IEnumerable ' 1根,IPageUrlBuilder pageUrlBuilder,字典' 2 urlToIdLookup)在c:Builds1FrejaCodeplexBuildSourcesPublicCompositeCoreWebClientRenderingsPagePageStructureInfo.cs:612Composite.Core.WebClient.Renderings.Page.PageStructureInfo。BuildMap(UrlSpace UrlSpace) in c:Builds1FrejaCodeplexBuildSourcesPublicCompositeCoreWebClientRenderingsPagePageStructureInfo.cs:559Composite.Core.WebClient.Renderings.Page.PageStructureInfo。GetMap(PublicationScope PublicationScope, CultureInfo localizationScope, UrlSpace UrlSpace)在c:Builds1FrejaCodeplexBuildSourcesPublicCompositeCoreWebClientRenderingsPagePageStructureInfo.cs:277Composite.Core.WebClient.Renderings.Page.PageStructureInfo。GetPageUrlBuilder(PublicationScope PublicationScope, CultureInfo localizationScope, UrlSpace UrlSpace)在c:Builds1FrejaCodeplexBuildSourcesPublicCompositeCoreWebClientRenderingsPagePageStructureInfo.cs:342Composite.Plugins.Routing.Pages.DefaultPageUrlProvider。ParseUrl(String relativeUrl, UrlSpace UrlSpace, urlKind & urlKind) in c:Builds1FrejaCodeplexBuildSourcesPublicCompositePluginsRoutingPagesDefaultPageUrlProvider.cs:249Composite.Plugins.Routing.Pages.DefaultPageUrlProvider。ParseUrl(String absoluteUrl, urlKind & urlKind) in c:Builds1FrejaCodeplexBuildSourcesPublicCompositePluginsRoutingPagesDefaultPageUrlProvider.cs:206Composite.Core.Routing.Pages.C1PageRoute。GetRouteData(HttpContextBase上下文)在c:Builds1FrejaCodeplexBuildSourcesPublicCompositeCoreRoutingPages c1pageroutes .cs:90System.Web.Routing.RouteCollection。GetRouteData(HttpContextBase httpContext) +287System.Web.Routing.UrlRoutingModule。PostResolveRequestCache(HttpContextBase context) +60System.Web.Routing.UrlRoutingModule。OnApplicationPostResolveRequestCache(对象发送方,EventArgs e) +86System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () + 148System.Web.HttpApplication。ExecuteStep(IExecutionStep step, Boolean& completedsynchronsynchronous) +75

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

更新。

通过代码看,似乎只有当你有2个网站与空"UrlTitle"字段的例外是可能的。通常有验证逻辑可以防止这种情况发生。尝试编辑两个网站的根,给他们不空的"Url标题"字段,然后发布他们,应该解决这个问题。如果这个错误仍然存在,我需要一个更好的复写器(我没有用提供的复写器复写),或者如果你给我一个网站的副本,我将调试它。

相关内容

最新更新