Исключение при обработке нескольких имен хостов в Composite C1

У меня проблема с настройкой нескольких имен хостов в 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(ключ объекта, значение объекта, логическое добавление) +9353115 System.Collections.Hashtable.Add(ключ объекта, значение объекта) +11 составной.Core.Collections.Generic.Hashtable`2.Add(ключ TKey, значение TValue) +105 Composite.Plugins.Routing.Pages.PageUrlBuilder.BuildUrlSet(страница IPage, Guid parentPageId) +1935 Composite.Core.WebClient.Renderings PageStructureInfo.BuildFolderPaths(SitemapBuildingData pagesData, IEnumerable`1 элементы, IDictionary`2 urlToIdLookup, IPageUrlBuilder строитель) +253 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.BuildMap(urlSpace urlSpace) +2200 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.GetMap(PublicationScope publishingScope, CultureInfo localizationScope, UrlSpace urlSpace) +482 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.GetPageUrlBuilder(публикация Scope публикация Scope, локализация пространства для объектов области локального доступа CultureSfo.PlayScope.PlayingScope.PlayingSpace.PlayingSpace.PlaySpace.PlayScope.Page.Scope.LageScopeSpaceSluPS). es.DefaultPageUrlProvider.ParseUrl(StringlativeUrl, UrlSpace urlSpace, UrlKind& urlKind) +311 Composite.Plugins.Routing.Pages.DefaultPageUrlProvider.ParseUrl(Строка absoluteUrl, UrlKind& urlKindteouTegTegTeteTegTeGeTeGTeTeGTTeGTeGTTeGTTeGTTeGTTegTReGTRPTC)) +6 контекст) +156 System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) +287 System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(контекст HttpContextBase) +60 System.Web.RoutingOv.OgnE +86 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148 System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, логический и завершенный синхронно) +75

У кого-нибудь есть решение для этого?

Заранее спасибо...

ОБНОВИТЬ:
После изменения dll, предложенного Дмитрием Дзыгиным, я получаю следующую трассировку стека:

[ArgumentException: элемент уже был добавлен. Ключ в словаре: '' Добавляемый ключ: ''] System.Collections.Hashtable.Insert(ключ объекта, значение объекта, логическое добавление) +9353115 System.Collections.Hashtable.Add(ключ объекта, значение объекта) +11 составной.Core.Collections.Generic.Hashtable`2.Add(ключ TKey, значение TValue) в c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Core\Collections\Generic\Hashtable.cs:28 Composite.Plugins.Routing.Pages.PageUrlBuilder.BuildUrlSet(страница IPage, Guid parentPageId) в c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Plugins\Routing\Pages\PageUrlBuilder.cs:190 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.BuildFolderPaths(элементы SitemapBuildingData pagesData, IEnumerable`1, IDictionary`2 urlToIdLookup, компоновщик IPageUrlBuilder) в каталоге c: \ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Web \ Renings \ Core \ Comses PageStructureInfo.cs:630 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.BuildFolderPaths(SitemapBuildingData pagesData, IEnumerable`1, корни, IPageUrlBuilder pageUrlBuilder, IDictionary`2 urlToIdLookup) в c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Core\WebClient\Renderings\Page\PageStructureInfo.cs:612 Composite.Core.WebClient.RenderageInfofoPage.BuildMap(UrlSpace urlSpace) в c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Core\WebClient\Renderings\Page\PageStructureInfo.cs:559 Composite.Core.WebClient.Renderings.Page.PageStru (PublicationScope publishingScope, CultureInfo localizationScope, UrlSpace urlSpace) в c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Core\WebClient\Renderings\Page\PageStructureInfo.cs:277 Composite.Core.WebClient.Renderings..PageStructureInfo.GetPageUrlBuilder(PublicationScope publishingScope, локализационный объем CultureInfo, UrlSpace urlSpace) в каталоге c: \ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Core \ WebClient \ Renderings \ Page \ PageStructureInpos.Port.Port.Info.fo. 34..Pages.DefaultPageUrlProvider.ParseUrl(StringlativeUrl, U rlSpace urlSpace, UrlKind & urlKind) в c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Plugins\Routing\Pages\DefaultPageUrlProvider.cs:249 Composite.Plugins.Routing.Pages.DefaultPageUrlrlUringPurringPuringPring UrlKind & urlKind) в c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Plugins\Routing\Pages\DefaultPageUrlProvider.cs:206 Composite.Core.Routing.Pages.C1PageRoute.GetRouteData(HttpContext ctext: HttpContext: HttpContext inte: HttpContext: HttpContext inte: HttpContext inte) \Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Core\Routing\Pages\C1PageRoute.cs:90 System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) +287 System.Web.RoutingReolWeccess.Ru (Контекст HttpContextBase) +60 System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Отправитель объекта, EventArgs e) +86 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutt.tep.Exp.Exp.Exp.Exp.Exp. (Шаг IExecutionStep, логическое и завершено синхронно) +7 5

1 ответ

Решение

Похоже, что-то вроде коллизии URL, когда 2 страницы C1 получили тот же URL или что-то в этом роде. В качестве решения я рекомендую скопировать файл отладочной версии Composite.dll и файлы Composite.pdf в папку /bin вашего веб-сайта. Вы можете найти их в Codeplex в разделе "Другие доступные загрузки" на странице релиза ( http://compositec1.codeplex.com/releases/view/80764). После этого вы увидите точную строку в коде, который его вызвал. Как только вы это сделаете, я смогу либо исправить это, либо добавить некоторые утверждения кода / логику проверки.

Обновить.

Просматривая код, выясняется, что исключение возможно только в том случае, если у вас есть 2 веб-сайта с пустым полем "UrlTitle". Обычно существует логика проверки, которая предотвращает возникновение этой ситуации. Попробуйте отредактировать оба корня веб-сайта, дать им не пустые поля "Url Title" и опубликовать их позже, что должно решить проблему. Если ошибка все еще сохраняется, мне нужно или лучшее воспроизведение (я не смог воспроизвести его с помощью предоставленного), или, если вы отправите мне копию веб-сайта, я отлажу ее.

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