我已經在webforms應用程序中的Global.asax中的RegisterRoutes()中寫入了以下內容。 我有一個名爲CacheInfo.xml的xml文件,用於存儲緩存頁面的詳細信息。默認頁面在xml中有一個名爲EnDefaultPage的條目,其中包含兩個子節點。 子節點LastUpdationTimeStamp存儲默認頁面的緩存的最後更新時間戳記(以秒爲單位的unix時間戳記)。Asp.net路由不能正常工作
子節點ExpiryTimestamp存儲緩存將過期的時間戳。所以如果到期時間戳大於lastupdation時間戳,緩存中的文件將被加載(Default.html)。目前該腳本正在工作,但是它不是路由到Default.html,雖然定義路由的條件塊正在執行。我無法找到問題背後的確切原因。任何人都可以給我一個修復建議。所有其他路由都可以正常工作。 我的代碼附在下面。
ublic void RegisterRoutes(RouteCollection routes)
{
string relPath = "~/CacheInfo.xml";
string absPath = Server.MapPath(relPath);
XmlDocument xdoc = new XmlDocument();//xml doc used for xml parsing
xdoc.Load(
absPath
);//loading XML in xml doc
string nodeName="", nodeVal="",upStamp="0",expiry="0";
int iUpStamp,iExpiry;
upStamp = xdoc.GetElementsByTagName("EnDefaultPage")[0].SelectSingleNode("LastUpdationTimeStamp").InnerText;
expiry = xdoc.GetElementsByTagName("EnDefaultPage")[0].SelectSingleNode("ExpiryTimeStamp").InnerText;
iUpStamp = Convert.ToInt32(upStamp);
iExpiry = Convert.ToInt32(expiry);
if(!String.IsNullOrEmpty(upStamp)) {
if (iExpiry > iUpStamp)
{
System.Diagnostics.Debug.WriteLine("stamp is " + upStamp + " Expiry is " + expiry);
// routes.MapPageRoute("EnHome1", "", "~/en/DefaultCache.aspx");
routes.MapPageRoute("EHome", "en/", "~/en/Default.html");
//this routing is not working
}
else
{
}
}
routes.MapPageRoute("GArticle", "Gallery/{slug}", "~/Gallery/Article.aspx");
routes.MapPageRoute("GCategory", "Gallery/Categories/{slug}", "~/Gallery/Categories.aspx");
routes.MapPageRoute("GSlideShow", "Gallery/{slug}/{id}", "~/Gallery/SlideShow.aspx");
routes.MapPageRoute("Article", "en/{slug}", "~/english/Article.aspx");
routes.MapPageRoute("Category", "en/Categories/{slug}", "~/english/Categories.aspx");
routes.MapPageRoute("enFeed", "en/category/english/{slug}/feed", "~/en/feed.aspx");
routes.MapPageRoute("teFeed", "te/category/telugu/{slug}/feed", "~/te/feed.aspx");
routes.MapPageRoute("Tags", "en/Tags/{tag}", "~/english/Tags.aspx");
routes.MapPageRoute("tArticleHtml", "te/{slug}.html", "~/telugu/Article.aspx");
routes.MapPageRoute("tArticle", "te/{slug}", "~/telugu/Article.aspx");
routes.MapPageRoute("tCategoryHtml", "te/Categories/{slug}.html", "~/telugu/Categories.aspx");
routes.MapPageRoute("tCategory", "te/Categories/{slug}", "~/telugu/Categories.aspx");
routes.MapPageRoute("tTagsHtml", "te/Tags/{tag}.html", "~/telugu/Tags.aspx");
routes.MapPageRoute("tTags", "te/Tags/{tag}", "~/telugu/Tags.aspx");
}
}
謝謝......但是routes.MapPageRoute(「EHome」,「en /」,「〜/ en/Default.html」)背後的原因是什麼?不工作?任何解決方案 – 2015-02-23 18:09:35
這是您的意圖嗎? 1.啓動Web服務器2.確定當前所有過期頁面(在啓動時)是否轉到default.htm。如果你需要逐個案例(現在已過期,而不是開始應用),那麼你不能這樣做。 RegisterRoutes旨在設置路線的「字典」,可以說是在啓動時。它不用於運行時條件邏輯。從開始的角度來看,它很可能是完美的,但是您希望運行時確定。如果你這樣做,我會建議看看OutputCache,這在RegsiterRoutes中沒有使用。 – 2015-02-23 18:15:57
注意:如果您需要自定義緩存,您仍然無法在RegisterRoutes中爲運行時實現它。 – 2015-02-23 18:16:25