3

我想知道是否有在非 asp.net 应用程序中使用标准 XmlSiteMapProvider 的解决方法,例如 WinForm/Console,或者在我的情况下是 VS Unit Test 应用程序。

以下代码失败,因为它无法.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 应用程序可能会同时显示多个窗口。如果您知道一次只显示一个窗口,您可以使用在访问 SiteMap API 之前设置的静态值。

现在,如果您必须完成所有工作,您必须质疑使用 API 的价值。可能没有足够的好处使它值得。

于 2008-09-24T20:29:50.673 回答