What is the quality of this project

Aug 24, 2008 at 6:56 AM
I just downloaded and looked at the forms-based authentication tools on this site and came to the conclusion that it is absolutely poorly written software.

First of all, it requires me to enter a server name (WTF?), instead of asking me for what provider to use (hence, the developer does not understand the provider model). The code is hardcoded for 'aspnetdb', but then uses Membership.Create... which uses the default provider(and not the server I just configured), I will not go on.

Is this the quality I can expect from the software, or is it local to FBA?

Aug 24, 2008 at 8:39 AM
I assume you're talking about the CKS:IEE?

Are you looking at the latest source, or the the October 2007 release?  I don't think that release was working. 

If you're looking at the latest source, where do you see aspnetdb hard coded?  I just checked, and the only occurance of that string in the solution is in some commented out code in the configuration management project which is not implemented yet.

I read somewhere that the FBA stuff was based on another codeplex project, and it seems like it was rewritten extensively since then.  A while back I looked at another FBA project, some sort of hosting demo as I recall, and it was full of hard coded strings, such as the server name and the Central Admin port.  This one is MUCH better than that, and it's close enough for me that I've continued to develop it on my own (based on changeset 15535) and currently have it in production.  There are a few significant architectural changes I'd like to make, but it's working for now.

In any case, the CKS:IEE has a few easily resolved bugs (see some recent posts in the issue tracker for the fixes), but it does use a membership provider, rather than connecting directly to the database by name, and I doubt the connection is hard coded anywhere because the database I'm using isn't called aspnetdb and FBA works fine for me.

As for the other projects in the Community Kit, one was written and released as a solution accelerator (CKS:ECTS) and seems pretty robust.  The CKS:EBE is pretty good too, and seems like one of the few that's actively being developed.  All of the projects have been developed independently, and most have come from different places, so there are a lot of style differences between them.  I suggest you get the latest source and have a look again.  Don't forget to browse the issue tracker to get the fixes.  I'd check them in, but I'm not a member of the project team.

Mike Sharp

Aug 25, 2008 at 2:52 PM
Hi Mike,

thanks for your quick reply. It seems I was talking about the older Forms Based Authentication release, not CKS:IEE. I'll be sure to check out the new code! Perhaps it is a good idea to mark the FBA release as rather obsolete?

Aug 25, 2008 at 3:08 PM
Hi Mike,

me again, not too happy. Downloaded the latest CKS:IEE, installed it, so good so far. I activated the 'FBA User Management' feature, went to the now available management page through SiteSettings->FBA Administration, and got a null ref error, see below. Don't know if you are the one to ask, but a few notes:
- why are there so many features, I don't want to activate 10 features to get 10 webparts. It clutters my interface. I installed FBA, I want to activate FBA, no more, no less.
- next, why does it crash when I just activate a single feature? Is this code actually tested the way it is provided? If there are feature dependencies (reason for the crash?), use activation dependencies.

Not to happy, now I've got to write my own FBA (glad I am a Visual Studio addict :)


Object reference not set to an instance of an object.   at CKS.FormsBasedAuthentication.FBAUsersView.ExecuteSelect(DataSourceSelectArguments selectArgs)
   at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback)
   at System.Web.UI.WebControls.DataBoundControl.PerformSelect()
   at System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
   at System.Web.UI.WebControls.GridView.DataBind()
   at System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()
   at System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls()
   at System.Web.UI.Control.EnsureChildControls()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Control.PreRenderRecursiveInternal()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Aug 25, 2008 at 9:04 PM
I agree, either removing the original release or marking it obsolete would be a good idea, but it appears that very little activity is taking place on this project at the moment.  :(

I'm not sure I can fully answer your first question, as I'm not involved in the development of the project (just an interested bystander), but some of the functionality, such as the Membership Review List was delivered as a separate feature because if you deactivate it, then the list is removed and membership requests are automatically approved.   You could have made that configurable, but then you'd have a list installed that you don't need.  There are separate web parts for each function (change password, log in, recover lost password, etc) so that you can put them on separate pages if you want.  It's hard enough training non-technical users without having to explain how to use one page with a bunch of different forms.  In practice, I only display three pages to the users, one to request membership, one to recover a lost password and one to change an existing password. 

As for note #2, the latest version of the code in the repository has some issues that have to be fixed.  If you send me an email, I'll point you to a SharePoint site where I've posted my version of the source code, which is working for me.  However, I'm making changes today, so it won't really be available until tonight sometime (pacific time).  I decided I wanted members of the Owner's group to be able to administer membership, and the layouts pages are all hard-coded to require a site collection administrator.  :(  But to paraphrase, Visual Studio is my ally!  Whatever your idea of the situation with the source code, I think it's a lot better start than rolling your own from scratch, unless you wanted to do it a lot differently.  My email address is the same user name as my CodePlex user name but at hotmail.com.  

Mike Sharp

Aug 27, 2008 at 11:37 AM
Hi Wouter,
I am also facing the same problem. i am very new in sharepoint and .net. if you have done your FBA can you please help me?
Zobayer Rabbi
Sep 1, 2008 at 9:54 AM
Yep, I'm getting a NullReference exception also. Has anyone been able to find / fix that?
Sep 1, 2008 at 10:03 AM
Edited Sep 1, 2008 at 11:13 AM
Hi Andy,

I'm in the code as we speak. What version of the code are you using, you ought to be using the latest changeset not the October release. Let me know how far you get and I'll try to help. (Do you have visual studio?)


PS. From memory if the list is empty, this causes the exception. Add at least one user using the register page/newuser.aspx etc and you may be ok.

Also... from post http://www.codeplex.com/CKS/Thread/View.aspx?ThreadId=17346 (Aug 15 4:%0pm, user Rew)
"For information, I used the changed set 15235 of the source code, which corrects the error message I had when accessing the user management page with an installation in a foreign language."

I started from 15234 so I don't have this change, but most of FBA works.