This issue is fixed now. The cause was that the CurrentSiteID was not initialized in the Context. So as soon as I create the Context, in the next line I set the CurrentSiteID:
CMSContext.CurrentSiteID = 1;
So I have 2 questions:
1 - Is there an elegant way to do it? Something like this?:
//Not allowed Site is a readonly property
CMSContext.CurrentSite.Site = SiteInfoProvider.GetSiteInfo("MyNewSite");
2 - What was the main cause The anonymous user or the Context being created on my external website (not being created by CMS)?