He estado teniendo algunos errores de tiempo de ejecución de producción que no entiendo completamente. Esto nos ha sucedido en un par de sitios web ASP.NET 4.0 diferentes (estremecimientos - sí, lo sé - estamos portándolo a MVC, pero eso lleva algo de tiempo).Sitemap se rompe aleatoriamente con el tiempo
En primer lugar, nunca hemos sido capaces de reproducir este problema en entornos de desarrollo/control de calidad. En segundo lugar, al momento del despliegue, el problema parece ser inexistente. A veces, el problema se manifiesta dentro de un día o dos de implementación y otras veces la implementación estará activa durante un mes sin que se manifieste en absoluto. Sin embargo, una vez que se manifiesta, CUALQUIER página vista bajo el sitio web causa el error. Por último, este problema parecía surgir una vez que migramos a .NET 4.0. Comenzamos en 2.0, hace un año aumentó a 3.5, y recientemente subimos a 4.0 con esta solución y la mayoría de los proyectos para niños.
El error: Could not find the sitemap node with URL '~/Default.aspx'.
Una versión simplificada de nuestro mapa del sitio (con algunos nombres cambiados y sin interés nodos eliminados) es el siguiente:
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
<siteMapNode roles="*" title="EG">
<siteMapNode url="~/../SM/Default.aspx" title="Welcome" description="" roles="*" />
<siteMapNode url="~/../SD/Default.aspx" title="SD" description="" roles="*" />
<siteMapNode url="~/../SMD/Default.aspx" title="SMD" description="" roles="*" />
<siteMapNode url="~/Default.aspx" title="Ops" description="" roles="*" >
<siteMapNode url="~/Error.aspx" title="Error" hide="true" roles="*" />
<siteMapNode url="~/Public/Login.aspx" hide="true" roles="*" />
<siteMapNode url="~/Manager/LPCE.aspx" title="LPCE" description="" roles="Administrator, Manager, System, Marketer" imageUrl="~/../SM/images/icons/LF.jpg" />
</siteMapNode>
<siteMapNode url="~/../SDD/Default.aspx" title="SDD" description="" roles="*" />
<siteMapNode url="~/../CCD/Default.aspx" title="CCD" description="" roles="*" />
<siteMapNode url="~/../RD/Default.aspx" title="RD" description="" roles="*"/>
<siteMapNode url="~/../SBD/Default.aspx" title="SBD" description="" roles="*" />
</siteMapNode>
</siteMap>
Está registrada en nuestro web.config:
<siteMap defaultProvider="SDXmlSiteMapProvider" enabled="true">
<providers>
<add name="SDXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="web.sitemap" securityTrimmingEnabled="true" />
<add name="SecurityDisabledSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="web.sitemap" securityTrimmingEnabled="false" />
</providers>
</siteMap>
Y de los registros he reducido lo que hace que el error se encuentre en una clase base que casi toda nuestra p edades derivan de:
private void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
SiteMapDataSource.StartingNodeUrl = "~/Default.aspx";
}
}
He confirmado en todos los Sitemaps que existe un nodo con url = "~/Default.aspx" con los roles = "*" (que incluye el acceso público/anónimo), por lo Estoy muy confundido sobre por qué ocurre este problema.
Los problemas que han tenido en cuenta:
- Mapa del Sitio no tiene un nodo para Default.aspx. Todos ellos lo hacen.
- No se puede acceder al nodo Default.aspx de SiteMap por razones de seguridad para el usuario/rol actual. Todos son accesibles para usuarios anónimos y este problema incluso existe para usuarios súper administradores.
- URL pasada contiene cadenas de consulta (Default.aspx? Abcd). No sé si esto es un problema (seguro que no) pero una vez que el problema se manifiesta, puedo escribir la URL sin cadenas de caracteres y el problema persiste.
- Cambios en el mapa del sitio. No
- Permisos del servicio al archivo del mapa del sitio. El mapa del sitio funciona perfectamente bien después de una implementación, por lo tanto, a menos que los permisos se modifiquen de manera que IISRESET corrija, entonces esto no es un problema.
- El proceso de trabajo se vuelve corrupto a nivel mundial. No lo creo. Tenemos ~ 12 sitios web en el mismo conjunto de aplicaciones y el problema siempre permanece confinado dentro de un único sitio web. Además, todavía tenemos que suceder esto a más de un único sitio web a la vez, aunque se ha manifestado en 4 diferentes hasta el momento.
¿Alguien puede arrojar algo de luz sobre esto? Casi parece que el SiteMap compilado dinámicamente se corrompe o algo así. La única resolución que he encontrado es IISRESET
o equivalente. Y aun así, no se sabe cuánto tiempo se resolverá el problema. ¡Esto es MUY frustrante!
¿En qué servidor está alojado este sistema? –
Win 2003 R2 Standard – Jaxidian
AÚN tenemos este problema y TODAVÍA me gustaría tener una respuesta para esto ... – Jaxidian