У меня были некоторые производственные ошибки периода выполнения, которые я не полностью понимаю. Это произошло с нами на паре различного ASP.NET 4,0 веб-сайта (дрожь - да, я знаю - мы портируем ее на MVC, но это занимает время).
В первую очередь, мы никогда не могли воспроизвести эту проблему в средах разработки/QA. Во-вторых, после развертывания, проблема, кажется, не существует. Иногда декларации проблемы в течение дня или двух из развертывания и другие времена развертывания будут живы в течение месяца без него проявляющий вообще. Однако, после того как это проявляет, затем ЛЮБАЯ страница, просмотренная под веб-сайтом, вызывает ошибку. Наконец, эта проблема, казалось, только подходила, после того как мы мигрировали на.NET 4.0. Мы запустили в 2,0, год назад повышенный к 3,5, и недавно повысились к 4,0 с этим решением и большинством дочерних проектов.
Ошибка: Could not find the sitemap node with URL '~/Default.aspx'.
Упрощенная версия нашей карты сайта (с некоторыми именами измененные и неинтересные удаленные узлы) следующие:
<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>
Это регистрируется в нашем 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>
И от журналов я сузил то, что вызывает ошибку, находится в базовом классе, из которого в значительной степени происходят все наши страницы:
private void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
SiteMapDataSource.StartingNodeUrl = "~/Default.aspx";
}
}
Я подтвердил во всех SiteMaps, что существует узел с URL = "~/Default.aspx" с ролями = "*" (который включает общедоступный/анонимный доступ), таким образом, я очень смущен относительно того, почему эта проблема происходит.
Проблемы я рассмотрел:
Кто-либо может пролить некоторый свет на это? Почти кажется, как будто динамично скомпилированный SiteMap повреждается или что-то. Единственное разрешение, которое я нашел, IISRESET
или эквивалентный. И даже затем, нет никакого сообщения относительно того, сколько времени проблема будет разрешена. Это ОЧЕНЬ печально!