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