Web Forms :: Programmatically Reference .sitemap File That Isn't The Root Web.sitemap File?
Nov 4, 2010
How would I programatically reference a .sitemap file that is not the root web.sitemap file? I have a file called research.sitemap in a folder a level under root. I want to refernce this file in my code behind like his: SiteMapNode m1 = SiteMap.RootNode (but since this isnt web.sitemap in the root, I dont know how to get access to it).
We are getting this error message when we try to click the link in the menu to go to Report Server:
Source Error: Line 31: <siteMapNode title="Reports" description="Reports"> Line 32: Line 33: <siteMapNode url="https://ffxsqldgc01.ffx.co.fairfax.va.us/Reports/Pages/Folder.aspx?ItemPath=%2fDPZ&ViewMode=List" title="View Reports" description="Click here to view the reports" /> Line 34: </siteMapNode> Line 35:
I tried to add after the &, as it was suggested on one of the forum but it did not work. Any other ideas.
I am creating a CacheDependency on the file that my SiteMap provider uses. I would like to get the name of the file from my sitemap provider instead of hard coding it. Is there a way?
Edit
Duh, I forgot to mention: XmlSiteMapProvider that comes with ASP.NET
Edit 2
Reflector shows a private member field called _filename that isn't exposed in any way as far as I can tell.
I have a sitemap file included in a asp.net masterpage that I want to use CSS to format. Unfortunately, I'm having some problems getting the web.sitemap file to read the CSS file. The following is my code for the Web.sitemap file. Could someone give me the code for getting my document to read the CSS file. The following is a copy the code I have now.
I've been searching Google for some answers and failed! Nothing has worked yet. Yes the Web.Sitemap is on the server.
Here is my web.config.
[Code]....
Here is my web.sitemap
[Code]....
I'm not sure if being hosted on a shared web server from aspnix or even having it in a sub domain may be the issue. This is my first time using the sitemap control.
I want to write a sitemap.xml to the root folder of my website automatically every month. Ofcourse I havent given the IIS_IUSRS group full permissions on the root folder of my website or on sitemap.xml
But what permissions should I give to which usergroup on which folder/file in order to have my ASP.NET application update the sitemap.xml from within the asp.net web application?
I've been having some production runtime errors that I don't fully understand. This has happened to us on a couple different ASP.NET 4.0 Web Sites (shudders - yes, I know - we're porting it to MVC but that's taking some time).
First of all, we have never been able to reproduce this issue in development/QA environments. Secondly, upon deployment, the issue seems to be non-existent. Sometimes the issue manifests within a day or two of deployment and other times the deployment will be live for a month without it manifesting at all. However, once it manifests, then ANY page viewed under the web site causes the error. Lastly, this problem seemed to only come up once we migrated to .NET 4.0. We started at 2.0, a year ago upped to 3.5, and recently upped to 4.0 with this solution and most child projects.
The error:
Could not find the sitemap node with URL '~/Default.aspx'.
A simplified version of our sitemap (with some names changed and uninteresting nodes removed) is as follows:
I have confirmed in all of the SiteMaps that there is a node with url="~/Default.aspx" with roles="*" (which includes public/anonymous access), so I am very confused as to why this problem occurs.
SiteMap does not have a node for Default.aspx. All of them do. SiteMap's Default.aspx node is not accessible for security reasons to the current user/role. They're all accessible to anonymous users and this problem even exists for super admin users. Passed-in URL contains querystrings (Default.aspx?abcd). I don't know if this is a problem (I sure would hope not) but once the problem manifests itself, I can handwrite the URL with no querystrings and the problem still exists.
SiteMap changes. It doesn't Service's permissions to the sitemap file. The sitemap works perfectly fine after a deployment, so unless permissions are changed in a way that IISRESET fixes, then this is not an issue. The worker process becomes globally corrupt. I don't think so. We have ~12 web sites all in the same app pool and the problem always stays confined within a single web site. Also, we have yet to have this happen to more than a single web site at a time although it has manifested itself in 4 different ones so far.
However, now I want to be able to create multiple web.sitemap files, and then programmatically determine which web.sitemap file to use, but I can't seem to find out how to do this. I'm assuming I could either create one custom SiteMapProvider that can perform the logic to determine which web.sitemap file to load, or I have multiple providers, each one with the SiteMapFile property set to a specific *.sitemap file, and then switch providers programmatically before I access SiteMap.RootNode.
I am having a problem with my web.sitemap I am getting the errorr:
"The file web.sitemap required by XmlSiteMapProvider does not exist."I have searched for this and the only thing I have read is that the file is actually not placed in the root directory on the server. I have made 110% sure it is in the root directory then i tried many times moving it back and forth from the actual project folder then deleting it and moving to the root directory about 10 times and cannot figure out whats going on...
I took over a rather large C# .NET 2.0 legacy web application from a colleague who is no longer available. This web application consists out of multiple projects in one solution. And I ran into a problem that I simply do not understand and hopefully somebody here will. The application has multiple .sitemap files included in a sitemap subfolder. So far so good. But I found one .sitemap file that was floating around in the root of the web project and is not used anywhere in the application (it's not included in the web.config).
I excluded this file. The web application runs fine without it. All menu's load correctly. Until I hit a method that uses recursion to look for certain controls (NOT the sitemap!). This method runs down through all controls from a given point and then crashes on the fact that the XMLSitemapProvider is missing this one file. This method is called many times without issues, but when the user logs out it somehow runs through a hierachical path of controls that eventually end up at the missing .sitemap file. The file also needs to be at this exact location in the root. Moving it somewhere else will cause the same crash. The file web.sitemap required by XmlSiteMapProvider does not exist.
I have searched for this filename and all ".sitemap" files but can not find it anywhere in the solution. 0 results found. I've ran past all the code leading up to the crash and it seems arbitrary (it has nothing to do with the sitemaps). The crash just happens because it hits the XmlSiteMapProvider looking for another control when it's going through all controls. In short, I can find no references what so ever to this file!
Since this web application is huge I can not manually go past every section of code. There is hundreds of thousands of lines of code. Does anybody know any other way then through the web.config to include a sitemap or how a sitemap file could be registered and where I should look? Final note: this application used localization. The sitemap's are localized and I found resources for this one sitemap. I hoped excluding those would solve the problem. Unfortunately it didn't.
I've been using a repeater to build a website's site map page by binding to the web.sitemap file. For example, to display 2 levels of links:
[Code]....
So far, everything works well. However, in some cases, I do not want to display certain pages in the site map. I've added a custom attribute to each node (nodisplay= 'true').How can i check for this attibute, and avoid it from being displayed by in the repeater.
Builder ( Main UL , without href ) Create Builder ( Navigates to CrtBuilder.aspx) Remove Builder ( Navigates to RmvBuilder.aspx) Supplier (Main UL) Create Supplier ( Navigates to CrtSupplier.aspx ) Remove Supplier Navigates to RmvSupplier.aspx
Now if a user clicks on CreateBuilder Menu then the user must see the site map in my breadcrumb like this :
Home > Builder > Create Builder
same way for supplier :
Home > Supplier > Create Supplier
remember ( on clicking Home the page must navigates to abc.aspx)
I have a second level node that goes onto two lines. The first line indents 15px as is set by the class for node level 2. The seond line kicks back to the same level as 1st level nodes. Here's what I mean:
I have a website, on the root i have web.sitemap that works fine for the web users, i have an admin area that is in a sub folder, ths second we.sitemap is on this sub folder how can i call this one ?