3

WinForm/Console、または私の場合は VS Unit Test のような、asp.net 以外のアプリケーション内で標準の XmlSiteMapProvider を使用するための回避策があるかどうか疑問に思います。

.sitemap次のコードは、プライベートGetConfigDocumentメソッド内でファイルへのパスを作成できないため、失敗します。

XmlSiteMapProvider provider = new XmlSiteMapProvider();
NameValueCollection providerAttributes = new NameValueCollection();
providerAttributes.Add("siteMapFile", "Web.sitemap");
provider.Initialize("XmlSiteMapReader", providerAttributes);
provider.BuildSiteMap();

適切な解決策は、別のプロバイダーを作成することだと思います。

4

1 に答える 1

2

なぜだかわかりません。インターフェイスを実装するのは単なるプロバイダーです。多くの機能は必要ないかもしれませんが、API が提供する機能にアクセスできます。WinForms 画面では、Url を識別に使用するだけで、階層内の場所を特定できます。

プロバイダーのカスタム実装を作成する必要がある場合があります。これは、HttpContext を使用して現在の Web 要求の Url を取得し、現在の配置を特定するためです。その値を別の方法で取得する必要があります。WinForm アプリケーションは一度に複数のウィンドウを表示する可能性があるため、これは注意が必要です。一度に 1 つのウィンドウしか表示されないことがわかっている場合は、SiteMap API にアクセスする前に設定された静的な値を使用できます。

すべての作業を行う必要がある場合、API を使用することの価値を疑問視する必要があります。価値のあるものにするのに十分な利点がないかもしれません。

于 2008-09-24T20:29:50.673 に答える