Исключение при обработке нескольких имен хостов в Composite C1 - PullRequest
1 голос
/ 06 марта 2012

У меня проблема с настройкой нескольких имен хостов в 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.RenderingsPageStructureInfo.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.PlayingScope.PlayingScope.PG)es.DefaultPageUrlProvider.ParseUrl (StringlativeUrl, UrlSpace urlSpace, UrlKind & urlKind) +311 Composite.Plugins.Routing.Pages.DefaultPageUrlProvider.ParseUrl (Строка absoluteUrl, UrlKind & urlKind.outeT.TegTegTeGeTeGTeTeGTeGTeGTeGTeGTeGTeGTeGTeGeTeRGTeGTReGeRTRKTR0C6) 66контекст) +156 System.Web.Routing.RouteCollection.GetRouteData (HttpContextBase httpContext) +287 System.Web.Routing.UrlRoutingModule.PostResolveRequestCache (контекст HttpContextBase) +60 System.Web.RoutingOgn.RegingsOpO+86 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +148 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный синхронно) +75
* 1013 для любого решения для любого решения?

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

ОБНОВЛЕНИЕ:
После изменения 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.WebCent.Renderings.Page.PageStructureInfo.BuildFolderPaths (элементы SitemapBuildingData pagesData, IEnumerable`1, IDictionary`2 urlToIdLookup, компоновщик IPageUrlBuilder) в каталоге c: \ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Web \ Renings \ Core \ ComposPageStructureInfo.cs: 630Composite.Core.WebClient.Renderings.Page.PageStructureInfo.BuildFolderPaths (SitemapBuildingData pagesData, IEnumerable`1 корни, IPageUrlBuilder pageUrlBuilder, IDictionary`2 urlToIdLookup) в C: \ Строит \ 1 \ \ Фрея CodeplexBuild \ Sources \ Public \ Композитный \ \ Основной WebClient \ Renderings \ Page \ PageStructureInfo.cs: 612 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.BuildMap (UrlSpace urlSpace) в c: \ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Core \ WebClient \ Renderings \ Page \ PageStructureInfo.cs: 559 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.GetMap (публикацияScope PublicationScope, локализация CultureInfo, область UrlSpace urlSpace) в c: \ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Core \ Core \ WebClicture \ Render .cs: ​​277 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.GetPageUrlBuilder (публикацияScope PublicationScope, локализация CultureInfoScope, UrlSpace urlSpace) в каталоге c: \ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \fo \ Ren \CуньЦента .cs: ​​342 Composite.Plugins. Composite.Plugins.Routing.Pages.DefaultPageUrlProvider.ParseUrl (String absoluteUrl, UrlKind & urlKind) в каталоге c: \ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Plugins \ Routing \ Pages \ DefaultPageUrlProvidecs: Composite.Core.Routing.Pages.C1PageRoute.GetRouteData (контекст HttpContextBase) в каталоге c: \ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Core \ Routing \ Pages \ C1PageRoute.cs: 90 System.Web.Routing.RouteCollection.GetRouteData (HttpContextBase httpContext) +287 System.Web.Routing.UrlRoutingModule.PostResolveRequestCache (контекст HttpContextBase) +60 System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache (Отправитель объекта, EventArgs e) +86 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +148 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершен синхронно) +75

1 Ответ

2 голосов
/ 06 марта 2012

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

Обновление.

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

...