Mi è capitato di dover far funzionare piccole community utilizzando i providers integrati in .net, in un caso specifico ho dovuto usare l'hosting di aruba. E' noto che aruba ha grossi problemi con il database sql server dato che le credenziali messe a disposizione per connettersi al database non sono database owner e questo è un discreto problema visto che nei providers integrati di .net c'è cablato a livello di codice il riferimento all'utente dbo.
Ho risolto il problema in questo semplice modo grazie anche al fatto che il codice dei provider integrati in .net è stato reso pubblico tempo fa,
- Ho scaricato il sorgente dei provider da qui
- Ho rimosso dai file tutti i riferimenti all'utente dbo
- Ho compilato e referenziato nel mio progetto la versione dei providers modificata da me
- Ho preso e modificato tutti gli script SQL di modifica, tabelle, viste e stored procedure che vengono lanciati dal tool di creazione automatica dei providers di asp.net (gli scritp si trovano nella cartella C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\)
- Ho lanciato gli script a mano senza passare dal tool automatico
Con questi semplici passaggi è possibile far funzionare i providers in maniera corretta anche su hosting aruba.
Il frutto di questo lavoro è disponibile da scaricare in versione già compilata qui:
ProvidersAruba.zip (71,27 kb)
Questo è il web.config che ho usato coi riferimenti ai miei custom providers:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<clear />
<add name="DbConnection" connectionString="mia_stringa_di_connessione" />
</connectionStrings>
<system.web>
<compilation debug="false" />
<authentication mode="Forms" />
<!-- Configure the Membership provider.-->
<membership defaultProvider="CustomMembershipProvider">
<providers>
<clear />
<add applicationName="Custom ASP.NET Provider" passwordFormat="" minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="2" maxInvalidPasswordAttempts="2" enablePasswordReset="true" enablePasswordRetrieval="true" passwordAttemptWindow="10" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" connectionStringName="DbConnection" name="CustomMembershipProvider" type="Ollie10.CustomProviders.SqlMembershipProvider, Ollie10.CustomProviders" />
</providers>
</membership>
<!-- Configure the Role provider.-->
<roleManager enabled="true" cacheRolesInCookie="true" cookieProtection="Validation" defaultProvider="CustomRoleProvider">
<providers>
<clear />
<add applicationName="Custom ASP.NET Provider" connectionStringName="DbConnection" name="CustomRoleProvider" type="Ollie10.CustomProviders.SqlRoleProvider, Ollie10.CustomProviders" />
</providers>
</roleManager>
<!-- Configure the Profile provider.-->
<profile defaultProvider="CustomProfileProvider">
<providers>
<clear />
<add applicationName="Custom ASP.NET Provider" connectionStringName="DbConnection" name="CustomProfileProvider" type="Ollie10.CustomProviders.SqlProfileProvider, Ollie10.CustomProviders" />
</providers>
</profile>
</system.web>
</configuration>