2008-09-23 6 views
3

Интересно, есть ли обходной путь для использования стандартного XmlSiteMapProvider в приложении non asp.net, например WinForm/Console или, в моем случае, VS Unit Test one.Есть ли способ использовать XmlSiteMapProvider в приложении WinForm/Console/VSTest?

Следующий код не работает, поскольку он не может создать путь к файлу .sitemap внутри частного метода GetConfigDocument.

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

Я считаю правильным решение написать другой провайдер.

ответ

2

Я не понимаю, почему нет. Это просто поставщик, который реализует интерфейс. Возможно, вам не нужны многие функции, но вы можете получить доступ к API за то, что он вам предоставляет. На экранах WinForms можно просто использовать URL для идентификации, чтобы вы могли определить свое место в иерархии.

Возможно, вам понадобится создать пользовательскую реализацию поставщика, поскольку он будет использовать HttpContext, чтобы получить Url текущего веб-запроса для определения текущего места размещения, в то время как вам нужно будет получить это значение по-разному. Это может быть сложно, потому что ваше приложение WinForm может отображать сразу несколько окон. Если вы знаете, что пока отображается только одно окно, вы можете использовать статическое значение, установленное перед обращением к API SiteMap.

Теперь вам нужно задать вопрос об использовании API, если вам нужно выполнить всю работу. Не может быть достаточной выгоды, чтобы сделать это стоящим.

 Смежные вопросы

  • Нет связанных вопросов^_^