2012-05-14 5 views
-1

내가 상속 한 웹 응용 프로그램에는 전달 된 개체의 상태를 기반으로 방문해야하는 URL을 결정하는 페이지가 들어 있습니다.ASP.Net 사이트 맵 URL 구별

URL은 사이트 맵 내에 저장되며 모든 것을 검색 할 수있는 방법이 있습니다.

private Dictionary<string, string> GetUrls() { 
    var urls = new Dictionary<string, string>(); 
    var provider = SiteMap.Provider; 

    var page1 = provider.FindSiteMapNodeFromKey("page1"); 
    var page2 = provider.FindSiteMapNodeFromKey("page2"); 


    if (page1 == null || page2 == null) 
    { 
     throw new ApplicationException("Pages not found in sitemap"); 
    } 

    urls["page1URL"] = page1.Url.ToString(CultureInfo.InvariantCulture); 
    urls["page2URL"] = page2.Url.ToString(CultureInfo.InvariantCulture); 

    return urls; 
} 

불행하게도이 방법에서, PAGE1 페이지 2는 항상 내가이 과정을 통해 디버깅하는 시도했지만 난 아무데도 문제가 근처 받고 있지 않다

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" enableLocalization="true"> 
    <siteMapNode resourceKey="Concessions" rule="AllowRead"> 
     <siteMapNode url="/page1.aspx" resourceKey="page1" rule="AllowAuthorised"/> 
     <siteMapNode url="/page2.aspx" resourceKey="page2" rule="AllowAuthorised"/> 
    </siteMapNode> 
</siteMap> 

null입니다. 다시 요약하면이 방법은 사이트 맵 내에 정의 된 페이지의 URL을 반환하는 데 필요합니다.

+0

설명 부분을 낭비 미안 (흥미 http://msdn.microsoft.com/en-us/library/system.web.sitemapprovider .findsitemapnodefromkey.aspx) - 어떤 공급자가 사용합니까? –

+0

예 "항상 모든 경우에 null을 반환합니다."그러나 URL을 얻는 방법, 내 newb-ness를 용서하십시오. – Deviland

+1

내 생각에 문제는 기본 XmlSiteMapProvider를 사용하고있는 것일 수 있습니다. URL 자체입니다. 따라서 "/page1.aspx"를 전달하거나 자신의 공급자를 구현하고 FindSiteMapNodeFromKey를 재정의해야합니다. –

답변

0

전혀 관계가없는 오류 찾기 방법에 대한 문서에 시간