我一直有一些生產運行時錯誤,我不完全理解。這發生在我們兩個不同的ASP.NET 4.0網站上(不寒而慄 - 是的,我知道 - 我們將它移植到MVC,但這需要一些時間)。Sitemap隨着時間的推移而隨機分佈
首先,我們從來沒有能夠在開發/質量保證環境中重現此問題。其次,部署後,這個問題似乎是不存在的。有時候這個問題會在部署的一兩天內展現出來,而其他時間部署將會持續一個月而不會顯示出來。但是,一旦它出現,那麼在網站下查看的任何頁面都會導致錯誤。最後,這個問題似乎只有在我們遷移到.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>
而從日誌我已經縮小了是什麼原因導致錯誤是在一個基類幾乎所有我們的p年齡從派生:
private void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
SiteMapDataSource.StartingNodeUrl = "~/Default.aspx";
}
}
我已確認在所有的Sitemaps存在與URL =「〜/ Default.aspx的」與角色的節點=「*」(包括公共/匿名訪問),所以我很困惑,爲什麼會出現這個問題。
的問題我也考慮過:
- 地圖不具備Default.aspx的一個節點。 所有這些都是。
- 由於安全原因,SiteMap的Default.aspx節點無法訪問當前用戶/角色。 它們都可以被匿名用戶訪問,甚至超級管理員用戶也會遇到這個問題。
- 傳入的URL包含查詢字符串(Default.aspx?abcd)。 我不知道這是否是一個問題(我當然希望不會),但是一旦問題出現,我就可以手寫URL而沒有querystrings,問題依然存在。
- SiteMap變化。 它不是
- 服務對站點地圖文件的權限。 站點地圖在部署後工作得很好,因此除非以IISRESET修復方式更改權限,否則這不是問題。
- 工作進程變得全局損壞。 我不這麼認爲。我們有大約12個網站都在同一個應用程序池中,問題始終侷限在單個網站中。此外,我們還沒有發生過這種情況,但它一次只能在一個網站上發佈,儘管迄今爲止它已經在4個不同的網站中出現。
任何人都可以對此有所瞭解嗎?它幾乎看起來好像動態編譯的SiteMap被損壞或什麼的。我發現的唯一解決方案是IISRESET
或同等產品。即使如此,也不知道問題能夠解決多久。這非常令人沮喪!
託管在哪個服務器上? – 2010-08-02 17:45:44
贏2003 R2標準 – Jaxidian 2010-08-02 18:57:33
我們仍然有這個問題,並仍然想有這個答案... – Jaxidian 2010-11-22 13:06:28