DotNetBlogEngine and similar third-party products that use the standard provider-based infrastructure (eg. use Membership and Role providers). We had a few older posts on this forum describing how to do it. All you have to do is to put a blog application in MonoX virtual folder, modify its web.config to point Membership and Role providers to MonoX instances, and to remove instances of HTTP handlers and modules that are not needed in the third party app.
As for opening a new blog for each user, below is the sample code you can put in your custom registration Web part. It overrides the MonoX MembershipEditor part and assumes that each new user can choose wheter he wants a blog when registering (there is a checkbox in the front end saying "Open my blog" or something like that):
...
using MonoSoftware.Core;
using MonoSoftware.MonoX.Caching;
using MonoSoftware.MonoX.Utilities;
using System.Net.Mail;
using MonoSoftware.MonoX.Mail;
using MonoSoftware.Web;
using MonoSoftware.Web.Caching;
using MonoSoftware.Core.Mail;
...
namespace MyProjectName.WebParts
{
public partial class MembershipEditor : MonoSoftware.MonoX.ModuleGallery.MembershipEditor
{
...
public override void CreateAccount(MembershipUser membershipUser)
{
...
PostAccountCreationActions(membershipUser);
}
protected virtual void PostAccountCreationActions(MembershipUser membershipUser)
{
if (chBlog.Checked)
{
BlogEntity blog = new BlogEntity(GuidExtension.NewSequentialGuid());
blog.Name = membershipUser.UserName;
blog.Slug = UrlSeoOptimizer.GetOptimizedString(blog.Name);
blog.DateCreated = DateTime.Now;
blog.UserId = new Guid(membershipUser.ProviderUserKey.ToString());
blog.ApplicationId = MembershipRepository.GetInstance().GetApplicationId();
blog.LanguageId = LocalizationUtility.GetCurrentLanguageId();
BlogRepository repository = BlogRepository.GetInstance();
repository.SaveBlog(blog, string.Empty);
}
}
...
}
}