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 |