2012-03-05 4 views
1

Composite C1で複数のホスト名を設定する際に問題があります。Composite C1で複数のホスト名を処理する際の例外

背景:
私はC1:site1とsite2に2つのウェブサイトを持っています。 C1のインストールは主にsite1用で、ホストwww.site1.com(および別名site1.com)と連携して動作します。
もう1つのサイトsite2をC1に追加しました。 site1.com/site2を閲覧すると、私はsite2ウェブサイトになります。大丈夫だ。
次に、別のホスト名www.site2.comをURL設定 - >ホスト名に追加しようとしています。 www.site2.comを追加してwww.site2.comにアクセスした後、次の例外が発生します: "アイテムが既に追加されています。"キーが追加されました: ''キーが追加されました: '' "

stacktraceは次のようになります:

[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キー、TV値)+105 Composite.Plugins.Routing.Pages.PageUrlBuilder.BuildUrlSet(IPageページ、Guid parentPageId)+1935 Composite.Core.WebClient .Renderings.Page.PageStructureInfo.BuildFolderPaths(SitemapBuildingData pagesData、IEnumerable`1要素、IDictionary`2 urlToIdLookup、IPageUrlBuilderビルダー)253 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.BuildMap(UrlSpace urlSpace)2200 コンポジット。 Core.WebClient.Renderings.Page.PageStructureInfo.GetMap(PublicationScope publicationScope、CultureInfoローカリゼーションcob、UrlSpace urlSpace)+482 Composite.Core.WebClient.Renderings.Page.PageStructureInfo.GetPageUrlBuilder(PublicationScope publicationScope、CultureInfo localizationScope、UrlSpace urlSpace)+9 Composite.Plugins.Routing.Pages.DefaultPageUrlProvider.ParseUrl(String relativeUrl、UrlSpace +306 Composite.Core.Routing.Pages.C1PageRoute.GetRouteData(HttpContextBase context)+156 System.Web.Routing .RouteCollection.GetRouteData(HttpContextBaseのHttpContext)287 System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBaseコンテキスト)60 System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(オブジェクト送信者、のEventArgs電子)+86 のSystem.Web。 SyncEvent ExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()148 System.Web.HttpApplication.ExecuteStep(IExecutionStepステップ、ブール&completedSynchronously)75

は、誰もがこのためのソリューションを持っていますか?事前に

おかげで...

UPDATE:
ドミトリーDzyginによって提案されたDLLを変更した後、私は次のスタックトレースを取得:

[ArgumentExceptionが:項目が既に追加されています。キーの追加: ''] System.Collections.Hashtable.Insert(Object key、Object nvalue、Boolean add)+9353115 System.Collections.Hashtable.Add(Object key、Object value)+11 c:\ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Core \ Collections \ Generic \ Hashtable.csのComposite.Core.Collections.Generic.Hashtable`2.Add(TKeyキー、TV値):28 Composite.Plugins.Routing.Pages.PageUrlBuilder。c:\ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Plugins \ Routing \ Pages \ PageUrlBuilder.cs:190 Composite.Core.WebClient.Renderings.Page.PageStructureInfoのBuildUrlSet(IPageページ、GuidのparentPageId) \ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Core \ WebClient \ Renderings \ Page \ PageStructureInfo.cs:630 のBuildFolderPaths(SitemapBuildingData pagesData、IEnumerable`1要素、IDictionary`2 urlToIdLookup、IPageUrlBuilderビルダー) c:\ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Core \にあるComposite.Core.WebClient.Renderings.Page.PageStructureInfo.BuildFolderPaths(SitemapBuildingData pagesData、IEnumerable`1ルーツ、IPageUrlBuilder pageUrlBuilder、IDictionary`2 urlToIdLookup) WebClient \ Renderings \ Page \ PageStructureInfo.cs:612 c:\ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ CoreのComposite.Core.WebClient.Renderings.Page.PageStructureInfo.BuildMap(UrlSpace urlSpace) \ WebClient \ Renderings \ Page \ PageStructureInfo.cs:559 c:\ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \にあるComposite.Core.WebClient.Renderings.Page.PageStructureInfo.GetMap(PublicationScope publicationScope、CultureInfo localizationScope、UrlSpace urlSpace)パブリック\ Composite \ Core \ WebClient \ Renderings \ Page \ PageStructureInfo.cs:277 c:\ Builds \ 1 \ FrejaのComposite.Core.WebClient.Renderings.Page.PageStructureInfo.GetPageUrlBuilder(PublicationScope publicationScope、CultureInfo localizationScope、UrlSpace urlSpace) \ CodeplexBuild \ Sources \ Public \ Composite \ Core \ WebClient \ Renderings \ Page \ PageStructureInfo.cs:342 c:\ Builds \ PublicFile.Flugins.Routing.Pages.DefaultPageUrlProvider.ParseUrl(String relativeUrl、UrlSpace urlSpace、UrlKind&urlKind) 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Plugins \ Routing \ Pages \ DefaultPageUrlProvider.cs:249 Composite.Plugins.Routing.Pages.DefaultPag c:\ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Plugins \ Routing \ Pages \ DefaultPageUrlProvider.csのeUrlProvider.ParseUrl(String absoluteUrl、UrlKind&urlKind):206 Composite.Core.Routing.Pages.C1PageRoute。 C:\ Builds \ 1 \ Freja \ CodeplexBuild \ Sources \ Public \ Composite \ Core \ Routing \ Pages \ C1PageRoute.cs:90 System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext)+287のGetRouteData(HttpContextBaseコンテキスト) System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBaseコンテキスト)60 System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(オブジェクト送信者、のEventArgs電子)+86 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep。 Execute()+148 System.Web.HttpApplication.ExecuteStep(IExecutionStepステップ、Boolean&completedSynchronously) +75

答えて

2

2つのC1ページに同じURLなどが届いたときに、いくつかのURL衝突が発生しているように見えます。解決策として、デバッグバージョンのComposite.dllファイルとComposite.pdfファイルをWebサイトの/ binフォルダにコピーすることをお勧めします。それらのコードは、Codeplexのリリースページ(http://compositec1.codeplex.com/releases/view/80764)の「その他の利用可能なダウンロードセクション」で見つけることができます。その後、それを引き起こしたコードの正確な行が表示されます。一度それを持っていれば、私はそれを修正するか、またはいくつかのコードアサーション/検証ロジックを追加することができます。

更新。

空白の「UrlTitle」フィールドを持つ2つのWebサイトがある場合にのみ例外が発生するようです。通常、この状況が起こらないようにする検証ロジックがあります。両方のウェブサイトのルーツを編集し、空の "Url Title"フィールドを与えないでください。その後、それらを発行して問題を解決してください。バグがまだ解消されていない場合、私は、より良いレプロを必要とします(提供されたもので再現できませんでした)か、ウェブサイトのコピーを送ってもらえれば、私はそれをデバッグします。

+0

ありがとうございます。 DLLを変更した後、私は次のスタックトレースを取得します: – Tech

+0

それはもう一度投稿するか、元の質問 –

+0

を編集するか、私にcomposite.netのddzをメールしてください –