Hi, I hope my answer will help you people or the ones that will comes here in future.
I faced this same issue for my news posts. After hours of exploring nop commerce source code. I found the cause & fix for this issue.
Fix: Add one more language from your admin - https://www.yourstore.com/Admin/Language/Create. (yes this seems awkward solution, but worth using until nopcommerce team fix the issue)
It's due to the method (Nop.Services.Seo.)UrlRecordService.GetSeName has a params called "ensureTwoPublishedLanguages" set "true" as a default value. This makes further inner codes to pass language id only when two or more languages are there in the store. otherwise "0" will be passed for database queries. But in the database your default(and only one) language (probably english) will have id as "1". So url records table won't have any news/blog post urls with language id as '0' ending up with zero urls for news or blogs. So adding one more language makes the above method to pass language id correctly and all urls for news/blog posts will be pulled from database.
Thanks for the investigation. We've fixed
Could you please post bug reports on this forum
in the future, it'll be of more worth.