1

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

背景:
C1 に 2 つの Web サイト (site1 と site2) があります。C1 インストールは主に site1 用であり、ホスト www.site1.com (およびエイリアス site1.com) で動作します。
ここで、別のサイト site2 を C1 に追加しました。site1.com/site2 を参照すると、site2 の Web サイトに行き着きます。大丈夫だ。
次に、別のホスト名 www.site2.com を URL Configuration -> Hostnames に追加しようとしました。www.site2.com を追加して www.site2.com を参照すると、次の例外が発生します。「アイテムは既に追加されています。辞書のキー: '' キーが追加されています: ''」

スタックトレースは次のようになります。

[ArgumentException: アイテムは既に追加されています。辞書のキー: '' 追加されるキー: ''] System.Collections.Hashtable.Insert(オブジェクト キー、オブジェクト nvalue、ブール値の加算) +9353115 System.Collections.Hashtable.Add(オブジェクト キー、オブジェクト値) +11 複合。 Core.Collections.Generic.Hashtable`2.Add(TKey キー、TValue 値) +105 Composite.Plugins.Routing.Pages.PageUrlBuilder.BuildUrlSet(IPage ページ、GUID 親ページ ID) +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 Composite.Core.WebClient.Renderings.Page .PageStructureInfo.GetMap(PublicationScopepublicationScope,

誰かがこれに対する解決策を持っていますか?

前もって感謝します...

更新:
Dmitry Dzygin によって提案された dll を変更した後、次のスタック トレースを取得します。

[ArgumentException: アイテムは既に追加されています。辞書のキー: '' 追加されるキー: ''] System.Collections.Hashtable.Insert(オブジェクト キー、オブジェクト nvalue、ブール値の加算) +9353115 System.Collections.Hashtable.Add(オブジェクト キー、オブジェクト値) +11 複合。 Core.Collections.Generic.Hashtable`2.Add(TKey キー、TValue 値) in c:\Builds\1\Freja\CodeplexBuild\Sources\Public\Composite\Core\Collections\Generic\Hashtable.cs:28 Composite.Plugins 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 ビルダー):
4

1 に答える 1

2

2 つの C1 ページが同じ URL またはそのようなものを受け取った場合、ある種の URL 衝突のように見えます。解決策として、デバッグ バージョンの Composite.dll ファイルと Composite.pdf ファイルを Web サイトの /bin フォルダーにコピーすることをお勧めします。Codeplex のリリース ページ ( http://compositec1.codeplex.com/releases/view/80764 ) の "Other available downloads section" でそれらを見つけることができます。その後、原因となったコードの正確な行が表示されます。あなたがそれを手に入れたら、私はそれを修正するか、いくつかのコードアサーション/検証ロジックを追加することができます.

アップデート。

コードを見ると、「UrlTitle」フィールドが空の 2 つの Web サイトがある場合にのみ、例外が発生する可能性があるようです。通常、このような状況が発生しないようにする検証ロジックがあります。両方の Web サイトのルートを編集して、空の「Url Title」フィールドを指定し、後で公開してみてください。これで問題が解決するはずです。バグがまだ解決しない場合は、より良い再現が必要です (提供されたものでは再現できませんでした)。または、ウェブサイトのコピーを送っていただければ、デバッグします。

于 2012-03-06T11:12:07.950 に答える