Custom SiteMap Provider 생성 시 URL을 http://naver.com 과 같이 가상 경로가 아닌 경우에 오류가 발생하게 됩니다.
[HttpException (0x80004005): 'http://naver.com'은(는) 올바른 가상 경로가 아닙니다.] System.Web.Util.UrlPath.CheckValidVirtualPath(String path) +11076778 System.Web.Util.UrlPath.Combine(String appPath, String basepath, String relative) +122 System.Web.StaticSiteMapProvider.AddNode(SiteMapNode node, SiteMapNode parentNode) +258
위와 같은 경우에 저는 약간의 꼼수를 써서 해결 하였습니다.
AddNode(SiteMapNode node, SiteMapNode parentNode) 를 Override하여 수정하였으며, 코드는 아래와 같습니다.
private SiteMapNode FindChildNodeByID(SiteMapNode ParentNode, string strId) { SiteMapNode smnFindNode = null; if (ParentNode != null && ParentNode.ChildNodes.Count > 0) foreach (SiteMapNode node in ParentNode.ChildNodes) { if (node.Key.Equals(strId)) { smnFindNode = node; break; } else if (node.ChildNodes.Count > 0) smnFindNode = FindChildNodeByID(node, strId); if (smnFindNode != null) break; } return smnFindNode; } protected override void AddNode(SiteMapNode node, SiteMapNode parentNode) { bool isVirture = node.Url.ToLower().StartsWith("http://"); string strId = node.Key; string strUrl = node.Url; node.Url = isVirture ? node.Url.Remove(0, 7) : node.Url; base.AddNode(node, parentNode); if (isVirture && base.RootNode != null && base.RootNode.ChildNodes.Count > 0) { SiteMapNode childNode = FindChildNodeByID(base.RootNode, strId); if (childNode != null) childNode.Url = strUrl; } }
SiteMapDataSource 사용 시 StartingNodeUrl에서 http://를 제거한 나머지 부분만 적용하게 되면, 제대로 값이 설정됩니다.
<asp:SiteMapDataSource runat="server" ID="smdsAdministration" SiteMapProvider="SqlSiteMapProvider" StartingNodeUrl="naver.com" />
2011/04/04 - [Developer/[.NET] C#] - Asp.net Create Custom Sql Sitemapprovider Sample
감사합니다.
'Troubleshoot' 카테고리의 다른 글
[Sharepoint 2010] SP.UI.$create_DialogOptions is undefined (IE7) (0) | 2011.08.01 |
---|---|
원격 호스트와 통신하는 동안 오류가 발생했습니다. 오류 코드는 0x80070057입니다. (2) | 2011.05.24 |
[어셈블리 바인딩 로깅이 꺼져 있습니다.] 어셈블리 바인딩 로깅 시작 방법 (1) | 2011.03.30 |
Sharepoint 2010 System.Security.SecurityException: Request failed(요청하지 못했습니다.) (0) | 2011.03.16 |
SharePoint 2010 배포 시 지정한 경로 및/또는 파일 이름이 너무 깁니다. (0) | 2011.01.19 |