2008-09-23 48 views
3

我想知道在非asp.net应用程序中使用标准XmlSiteMapProvider是否有解决方法,比如WinForm/Console,或者在我的情况下,VS单元测试一个。WinForm/Console/VSTest应用程序中是否有任何方法使用XmlSiteMapProvider?

以下代码失败,因为它无法在专用GetConfigDocument方法内创建.sitemap文件的路径。

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

我觉得正确的解决方案是编写另一个提供者。

回答

2

我不明白为什么不。它只是一个实现接口的提供者。您可能不需要很多功能,但您可以访问API提供的功能。您的WinForms屏幕可以简单地使用Urls进行标识,以便您可以确定您在层次结构中的位置。

您可能需要做的是创建提供程序的自定义实现,因为它将使用HttpContext获取当前Web请求的Url来标识当前位置,而您需要以不同方式获取该值。这可能会非常棘手,因为您的WinForm应用程序可能在时间显示多个窗口。如果您知道一次只显示一个窗口,则可以使用在访问SiteMap API之前设置的静态值。

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

相关问题