You can always create a dynamic sitemap :)
All you need to do is assemble all the current dynamic elements, and present them in xml format. For example, if you have a simple e-shop with multiple products, your sitemap should look like:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.blahblahblah.com/products/1</loc>
...
</url>
<url>
<loc>http://www.blahblahblah.com/products/2</loc>
...
</url>
<url>
<loc>http://www.blahblahblah.com/products/3</loc>
...
</url>
...
</urlset>
You'll need a sitemap controller that queries the database and gets all products, and then displays them in an xml view. I don't know the specifics for ASP.Net MVC, but the guys over at StackOverflow dothe guys over at StackOverflow do. The lastmod
dates should be the actual timestamps you store in your database. And of course, you can add every possible url for your site in there, regardless if it's static or dynamic content.
It doesn't matter that your sitemap url shows dynamic content and you can even make it look like www.blahblahblah.com/sitemap.xml
via routing. You should be aware that there are some limits:
Sitemap files have a limit of 50,000 URLs and 10 megabytes per sitemap. Sitemaps can be compressed using gzip, reducing bandwidth consumption. Multiple sitemap files are supported, with a Sitemap index file serving as an entry point. Sitemap index files may not list more than 50,000 Sitemaps and must be no larger than 10MB (10,485,760 bytes) and can be compressed. You can have more than one Sitemap index file.3
As with all XML files, any data values (including URLs) must use entity escape codes for the characters ampersand (&), single quote ('), double quote ("), less than (<), and greater than (>).
The sitemap index file can also be dynamic. Make sure you cache appropriately, you don't want to do any costly database calls each and every time the bot visits. This might be a little tricky, you'll have to choose the cache interval based on how often you update your dynamic content.
And here's an ASP.Net MVC tutorial that goes into a little bit more detail.