Ok I have a group of three web applications.
My existing web application doesn't have any customization whatsoever, it just used the basic membership providers.
YAF.NET uses custom providers, the one that posed a problem was the custom profile provider:
<profile enabled="true" defaultProvider="YafProfileProvider" inherits="YAF.Utils.YafUserProfile">
<providers>
<clear/>
<add connectionStringName="yafnet" applicationName="YetAnotherForum" name="YafProfileProvider" type="YAF.Providers.Profile.YafProfileProvider"/>
</providers>
</profile>
So I integrated this with my main site, by just adding the reference to YAF.Utils
and the inherits="YAF.Utils.YafUserProfile"
attribute to my profile provider on the main site.
But now I'm trying to also integrate BugNET into the mix. BugNET has the following customization of their membership implementation:
<membership defaultProvider="ExtendedSqlMembershipProvider">
<providers>
<clear />
<add name="ExtendedSqlMembershipProvider" type="BugNET.Providers.MembershipProviders.ExtendedSqlMembershipProvider, BugNET.Providers.MembershipProviders.ExtendedSqlMembershipProvider" connectionStringName="BugNET" description="Extended Membership API" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="BugNET" requiresUniqueEmail="false" passwordFormat="Encrypted" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
<profile enabled="true" automaticSaveEnabled="false" defaultProvider="MyProfileProvider">
<providers>
<clear />
<add name="MyProfileProvider" type="Altairis.Web.Providers.SimpleSqlProfileProvider, Altairis.Web.Providers" connectionStringName="BugNET" tableName="BugNet_UserProfiles" keyColumnName="UserName" lastUpdateColumnName="LastUpdate" />
</providers>
<properties>
<add name="FirstName" type="String" customProviderData="FirstName;nvarchar;100" />
<add name="LastName" type="String" customProviderData="LastName;nvarchar;100" />
<add name="DisplayName" type="String" customProviderData="DisplayName;nvarchar;150" />
<add name="IssuesPageSize" type="Int32" defaultValue="10" customProviderData="IssuesPageSize;int" />
<add name="NotificationTypes" type="String" defaultValue="Email" customProviderData="NotificationTypes;nvarchar;255" />
<add name="PreferredLocale" type="String" defaultValue="en-US" customProviderData="PreferredLocale;nvarchar;50" />
<add name="SelectedIssueColumns" type="String" defaultValue="" customProviderData="SelectedIssueColumns;nvarchar;50" />
</properties>
</profile>
In what way should I merge all three web.configs?
My goal is to have the following application structure:
And all three integrated under the same ASP.NET Membership model.
In order to accomplish this I obviously need to
- Use the same machine key in all web config files, or so I've read?
- I think there was something about telling all three applications what the "web root" was? As in, setting it to "www.website.com"
- Merge the membership profiles, how would I achieve this, I've read somewhere that YAF's implementation of inheriting from their custom profile provider overrides whatever is put into the
properties
node of theprofile
section. I have no problem editting their implementation, or source code. Should I perhaps edit into YAF.Utils.YafUserProfile the custom properties that are in BugNET's implementation, and maybe also rename it as something more adequate, and perhaps put it in my main website solution? - What about the "extended membership provider" BugNET seems to be using? should I just test this out as-is and find out if they are compatible? Using different implementations in different solutions, is that compatible?
- Is there anything else I might be missing?
On an additional note I should mention that I'm intending on having a special folder called App_Shared
, which will in the main website project, and an svn-external to both YAF.NET and BugNET. There, I intend to place a Base master page all three applications should inherit from, so I can share some very basic details like a header, a footer, and a SiteMap.
All help is welcome, thanks!