有什么方法可以在WinForm / Console / VSTest应用程序中使用XmlSiteMapProvider?
时间:2020-03-06 14:37:54 来源:igfitidea点击:
我想知道是否存在在非asp.net应用程序(例如WinForm / Console)中使用标准XmlSiteMapProvider的解决方法,或者在我的情况下是VS单元测试。
以下代码失败,因为它无法在私有GetConfigDocument
方法内创建.sitemap
文件的路径。
XmlSiteMapProvider provider = new XmlSiteMapProvider(); NameValueCollection providerAttributes = new NameValueCollection(); providerAttributes.Add("siteMapFile", "Web.sitemap"); provider.Initialize("XmlSiteMapReader", providerAttributes); provider.BuildSiteMap();
我认为正确的解决方案是编写另一个提供程序。
解决方案
我不明白为什么不这样做。它只是实现接口的提供程序。我们可能不需要许多功能,但是可以访问API提供的功能。 WinForms屏幕可以简单地使用Urls进行标识,以便我们可以确定层次结构中的位置。
我们可能需要做的是创建提供程序的自定义实现,因为它将使用HttpContext获取当前Web请求的Url来标识当前放置位置,而我们需要以其他方式获取该值。那可能很棘手,因为WinForm应用程序可能一次显示多个窗口。如果我们知道一次只显示一个窗口,则可以使用在访问SiteMap API之前设置的静态值。
现在,如果必须完成所有工作,则必须质疑使用API的价值。可能没有足够的好处使它值得。