asp.net - route - select asp-for asp-items
¿Hay alguna forma de utilizar XmlSiteMapProvider dentro de la aplicación WinForm/Console/VSTest? (1)
No veo porque no. Es solo un proveedor que implementa una interfaz. Es posible que no necesite muchas de las funciones, pero puede acceder a la API por lo que le ofrece. Sus pantallas de WinForms pueden simplemente usar las URL para su identificación, de modo que pueda determinar su lugar en la jerarquía.
Lo que debe hacer es crear una implementación personalizada del proveedor porque usará HttpContext para obtener la URL de la solicitud web actual para identificar la ubicación actual, mientras que deberá obtener ese valor de manera diferente. Eso es lo que podría ser complicado porque su aplicación WinForm podría mostrar varias ventanas a la vez. Si sabe que solo hay una ventana que se muestra a la vez, puede usar un valor estático que se establece antes de acceder a la API de SiteMap.
Ahora tienes que cuestionar el valor de usar una API si tienes que hacer todo el trabajo. Es posible que no haya suficiente beneficio para que valga la pena.
Me pregunto si hay una solución para usar el XmlSiteMapProvider estándar dentro de una aplicación que no sea asp.net, como WinForm / Console o, en mi caso, VS Unit Unit Test one.
El siguiente código falla, porque no puede crear una ruta al archivo .sitemap
dentro de un método GetConfigDocument
privado.
XmlSiteMapProvider provider = new XmlSiteMapProvider();
NameValueCollection providerAttributes = new NameValueCollection();
providerAttributes.Add("siteMapFile", "Web.sitemap");
provider.Initialize("XmlSiteMapReader", providerAttributes);
provider.BuildSiteMap();
Siento que la solución correcta es escribir a otro proveedor.