domenica 31 luglio 2011

Configure Membership c# (asp.Net) 2 Next Step.

Giusto perchè, l'applicazione del post precedente funziona... se e solo se specificate un appPool a 32 bit su IIS come mettete tutto a 64 ... sparisce la gestione integrata degli Utenti.

Ossia Scompaio le due icone di User.Net e Role.Net e sapete perchè ?
No (immaginavo) e quindi ve lo dico io.

Vi ricordate il discorso 32 bit e 64 bit ?? No?? bhe è riassumibile con se fai una cosa a 32 non è detto che vada a 64 o che la stessa configurazione regga.
L'esempio classico sono i db Driver che per un applicazione a 32 se questi sono a 64 comunicano un errore di Archittettura.

IIS non è da meno.. ossia On board sul vostro server avete uno splendido file chiamato :administration.config

C:\Windows\System32\inetsrv\config\administration.config
(file che dovrete necessariamente aprire con i diritti di amministratore se no
non ne uscite)
accedete prima a questo percorso
C:\Windows\System32\inetsrv\config
eseguite il notepad come administrator ( non il notepad++ o l'ultra edit .. il
notepad !) drag'n drop del file !


Che contiene le informazioni necessarie a far funzionare il vostro IIS.

<trustedProviders allowUntrustedProviders="false">
<add type="System.Web.Security.SqlMembershipProvider,
System.Web, Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />

<add type="System.Web.Security.SqlRoleProvider,
System.Web, Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />

<add type="System.Web.Security.WindowsTokenRoleProvider,
System.Web, Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</trustedProviders>


E magia magia gurdate un po a che cosa fanno riferimento ??

Version=2.0.0.0 già ! e aprite il vostro web config... e guardate un attimo a
cosa fa riferimento il vostro System.Web ?? Non c'e' scritto vero ?? GIA'

Ma da Solution Explorer, selezionando le reference scopriamo che si tratta della release 4.0.0.0

E poi la botta finale... andate qui
C:\Windows\assembly\ e guardate con somma gioia che cosa state realmente caricando ...

Version=2.0.0.0 già !

Morale chi ha ragione e chi ha torto ?? Che cosa realmente stiamo usando ?? Pare che
IIS ragioni a 32, con una vecchia release della system web, e benche sia configurabile, il set up di MS non si accorge che hai un sistema a 4 processori da 64 bit con il .Net 4 installato. Altro che barre di scorrimento!!!


Fa nulla, non è grave facciamo tutte le web application con il framework 2, tanto era solido... O se no vado nella GAC e zappo la System.Web 2.0.0.0

Di contro un qualcosa si può fare senza che esploda la macchina, modificare l'attributo

<trustedProviders allowUntrustedProviders="false">

in
<trustedProviders allowUntrustedProviders="true">


A questo punto riavviate l'IIS e incrociate le dita.. vi dirà che la cosa non è sicura
che è possibile che vi sia qualche altra cosa che si inventa lui.. ma non vi preoccupate tutto andrà !

E adesso l'ultima sfida... se io il db non lo volessi in App_Data ? ( che probabilmente anche il più fesso degli hkr sa dove andarlo a cercare ?? )

Bene ci basta fare questo :

a) verificate di non aver aperto il db presente in App_Data
b) rinominate la cartella ( in quel che più vi pare )
c) cambiate i permessi se la cartella non si trova più sotto il percorso inetpub
d) modificate il vostro web config

<remove name="LocalSqlServer" />        
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;
Integrated Security=SSPI;
AttachDBFilename=D:\MyData\aspnetdb.mdf;
User Instance=true"
providerName="System.Data.SqlClient" />
<add name="LocalSqlServer"
connectionString="data source=.\SQLEXPRESS;
Integrated Security=SSPI;
AttachDBFilename=D:\MyData\aspnetdb.mdf;
User Instance=true"
providerName="System.Data.SqlClient" />


E quindi riprendere ad usare il Tutto integrato per la gestione degli utenti.

Quando avrete finito dovrete rimettere l'appPool correto ( sempre che vi serva a 64 )
se no avete finito !

Ok non è stato facile integrare il tutto senza implementare qualcosa di nostro vero...
e pensare che per fare la form degli utenti ci vogliono 20 min... !

1 commento:

Andrea ha detto...

FANTASTICO! Mi hai risolto un problema che mi assillava da venerdì sera.