DotNetCampania
Il primo portale campano dedicato allo sviluppo software con tecnologie Microsoft

Autenticazione Forms in Asp.net

rated by 0 users
Non risposto This post has 0 verified answers | 14 Replies | 5 Followers

Top 25 Partecipanti
Maschio
11 Post
Punteggio 205
Marco Savarese posted on 3 nov 2009 9:57

Rubando un po di tempo alla "miniera" ,tra una picconata in vb6 e una in ASP Classic, sto sviluppando un'applicazione in ASP.NET...e subito mi sono imbattuto in un problema strano...dunque...

Ho abilitato l'autenticazione di tipo Forms da web.config, ho creato il db con l'apposito tool ma come database "classico" di sql server 2008...ho configurato correttamente il provider....infatti il tutto in ambiente di sviluppo funziona, cioè funziona quando visual studio lancia il suo web server (cassini)....ma se sposto il tutto sotto iis non funziona più nulla, cioè mi appare la pagina di login ma se metto il profilo utente corretto non mi fa andare avanti....ho anche creato una pagina di login senza usare il controllo login, usando le Membership api con lo stesso risultato. Credo a questo punto che manchi qualcosa nella configurazione di iis...(iis 6 su windows server 2003)...ma cosa? a me sembra tutto ok !!! Infatti se vado sulle proprietà della cartella virtuale mi evidenzia che è attivata l'autenticazione forms!!!Qualcuno "in ascolto" ha un'idea...un suggerimento?

Saluti e grazie a tutti...torno, per ora, al mio caro vb6

Marco

 

  • | Punteggio Post: 35

All Replies

Top 10 Partecipanti
Maschio
379 Post
Punteggio 5.540

Ciao Marco,

puoi postare il tuo web.config? n occhi vedono meglio di 2. Naturalmente diamo per scontato che:

1. Il server su cui è installato Sql server sia raggiungibile dal server delle applicazioni (nel  caso non sia lo stesso)

2. Stai usando auteticazione mista (Windows e Sql Server) e l'account che usi è funzionante (basta provare da management studio che riesci a connetterti con quell'account, controlla pure che riesci ad aprire le tabelle)

 

  • | Punteggio Post: 20
Top 25 Partecipanti
Maschio
11 Post
Punteggio 205

<?xml version="1.0"?>
<!--
    Nota: come alternativa alla modifica manuale del file, è possibile utilizzare lo
    strumento di amministrazione Web per configurare le impostazioni dell'applicazione. Utilizzare il comando
    Configurazione ASP.NET del menu Sito Web di Visual Studio.
    Un elenco completo di impostazioni e commenti è disponibile nel file
    machine.config.comments che si trova in genere in
    \Windows\Microsoft.Net\Framework\v2.x\Config
-->
<configuration>
    <configSections>
        <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                    <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
                    <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                    <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                    <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                </sectionGroup>
            </sectionGroup>
        </sectionGroup>
    </configSections>
  <appSettings>
    <add key="CNDB" value="data source=(local);initial catalog=GEMAGRF2;uid=sa;pwd=xxxxxx;" />
    <add key="PATH_LOG" value="c:\LOG_ACTIVITY" />
  </appSettings>
    <connectionStrings>
  <add name="CN_STRING" connectionString="Data Source=(local);Initial Catalog=GEMAGRF2;User ID=sa;Password=xxxxxx" providerName="System.Data.SqlClient" />
    <remove name="LocalSqlServer"/>
    <add name="LocalSqlServer" connectionString="data source=(local);Initial Catalog=sicurezza;uid=sa;pwd=xxxxxxx" providerName="System.Data.SqlClient"/>

  </connectionStrings>
    <system.web>
        <!--
            Impostare compilation debug="true" per inserire i
            simboli di debug nella pagina compilata. Poiché tale
            operazione ha effetto sulle prestazioni, impostare questo valore su true
            solo durante lo sviluppo.
        -->
        <compilation debug="true" defaultLanguage="c#">
   <assemblies>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
   </assemblies>
  </compilation>
        <!--
            La sezione <authentication> consente di configurare
            la modalità di autenticazione della sicurezza utilizzata da
            ASP.NET per identificare un utente in ingresso.
         -->
       
    <authentication mode="Forms">
       <forms loginUrl="Login.aspx"
          cookieless="AutoDetect"    />
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>
    <membership>
       <providers>
          <clear />
          <add minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="4"
             connectionStringName="LocalSqlServer" name="AspNetSqlMembershipProvider"
             type="System.Web.Security.SqlMembershipProvider" />
       </providers>
    </membership>
   
        <!--
            La sezione <customErrors> consente di configurare
            l'operazione da eseguire in caso di errore non gestito
            durante l'esecuzione di una richiesta. In particolare,
            consente agli sviluppatori di configurare le pagine di errore HTML
            in modo che vengano visualizzate al posto dell'analisi dello stack dell'errore.

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
        <pages>
            <controls>
                <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </controls>
        </pages>
        <httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
        </httpHandlers>
        <httpModules>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </httpModules>
    </system.web>
    <system.codedom>
        <compilers>
            <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
                <providerOption name="CompilerVersion" value="v3.5"/>
                <providerOption name="WarnAsError" value="false"/>
            </compiler>
            <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
                <providerOption name="CompilerVersion" value="v3.5"/>
                <providerOption name="OptionInfer" value="true"/>
                <providerOption name="WarnAsError" value="false"/>
            </compiler>
        </compilers>
    </system.codedom>
    <!--
        La sezione system.webServer è richiesta per eseguire ASP.NET AJAX in Internet
        Information Services 7.0. Non è necessaria per la versione precedente di IIS.
    -->
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules>
            <remove name="ScriptModule"/>
            <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </modules>
        <handlers>
            <remove name="WebServiceHandlerFactory-Integrated"/>
            <remove name="ScriptHandlerFactory"/>
            <remove name="ScriptHandlerFactoryAppServices"/>
            <remove name="ScriptResource"/>
            <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </handlers>
    </system.webServer>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

Come si vede per fare i test ho usato il profilo sa...è chiaro che in produzione non sarà quello...e la macchina su cui è installato sql server è la stessa di dove gira IIS...il mistero si infittisce?

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
379 Post
Punteggio 5.540

Che versione stai usando di sql server ? la express?

  • | Punteggio Post: 20
Top 25 Partecipanti
Maschio
11 Post
Punteggio 205

Sql Server 2008 Standard...

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
379 Post
Punteggio 5.540

La connectionstring sembra apposto, giusto per tentarne un'altra proverei a sostituire localhost con l'ip o il nome della macchina...

  • | Punteggio Post: 20
Top 25 Partecipanti
Maschio
11 Post
Punteggio 205

Mi spiace...dice sempre "tentativo di accesso non riuscito. Riprovare".......altri suggerimenti? Ditemi di si......

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
379 Post
Punteggio 5.540

comincia a pensare ad un problema legato alla tua macchina. Se mi mandi il progettino e lo script del db faccio una prova sul mio server. Almeno ci togliamo il dubbio che sia la tua macchina il problema.

  • | Punteggio Post: 5
Top 25 Partecipanti
15 Post
Punteggio 315

Se posso dire la mia...

1) proverei a connettermi al database utilizzando SQL Server Management Studio per controllare che non ci sono problemi
2) qual'è il messaggio di errore? Prova a connetterti con un pagina di test dove provi ad aprire la connessione
3) ho notato che c'è una piccola differenza nella definizione delle connection string, in particolare mi riferisco alle keyword che specificano username e password: in una sono utilizzate User ID e Password, nell'altra uid e pwd

  • | Punteggio Post: 35
Top 25 Partecipanti
Maschio
11 Post
Punteggio 205

Certo che puoi dire la tua...anzi devi...lo spirito di una comunity è proprio quello di discutere liberamente di queste cose...

ma veniamo alle mie dolenti note...ho provato già a connettermi da una pagina di test...e funziona...ho addirittura usato il profilo sa come si può vedere per la disperazione!!!...il tipo di errore che da non è un eccezione ma un messaggio del controllo login di asp.net che dice che la connessione non ha avuto esito posistivo...ritentare...secondo me non  è un problema di connessione al db ma di iis configurato male ma non riesco a capire dove!!!!

Per ora l'applicazione gira senza controllo di accesso Aiuto!!!

  • | Punteggio Post: 5
Top 25 Partecipanti
Maschio
11 Post
Punteggio 205

Dimenticavo...ho anche provato a cambiare uid in user id..e pwd in password...senza risulatato!!!

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
379 Post
Punteggio 5.540

Se riesci a inviarmi il materiale ci togliamo il dubbio!

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
288 Post
Punteggio 3.802

non posso far altro che aggiungere anche le mie ipotesi:

1)Siamo sicuri che il DBMS sia correttamente configurato per le connessioni TCP/IP?

2)Permessi sulle cartelle della webApp di IIS? Ci sono?

 

Aggiungerei anche una bella SQLEXCEPTION nel try/catch...

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 20
Top 25 Partecipanti
Maschio
11 Post
Punteggio 205

Ragazzi....tutto quello che mi avete suggerito l'ho provato....ma niente.....ho pensato di creare una bella macchina virtuale win2003 "pulita" e mettere tutto su....vediamo che succede....

Appena ho novità vi faccio sapere...

 

  • | Punteggio Post: 20
Top 25 Partecipanti
Maschio
39 Post
Punteggio 780

Ciao a tutti posto anche io il mio aiuto sperando di risolvere il problema a Marco.

Prima una considerazione sul web.Config.
Da ciò che hai postato si evince che ti riferisci ad un'istanza locale di SQL Server. Cioè locale alla macchina nella quale stai deployando il tuo sistema. Corretto?
Inoltre proverei a rendere l'Authentication non CookieLess per fare una prova...

Se ciò non dovesse andare allora comincerei per prima cosa l'analisi del db partendo da :

  • Configuro la Surface per accettare connessioni di tipo TCP/IP su porte NON dinamiche
  • Mi connetto tramite SQL Management Studio con un account per validare i privilegi di quell'account
  • Controllo i privilegi in LOGIN dell'account con cui mi sto connettendo al DB, cioè quello specificato in ConnectionString
  • Controllo gli schema assegnati al l'account con cui mi sto connettendo al DB

Se fatto ciò nn dovesse ancora andare, passerei ad esaminare IIS (visto ke a naso l'applicazione ASP.Net mi sembra istanziata correttamente) :

  • Analizzo che tutti i privilegi sulla cartella di IIS siano messi x bene....mi riferisco ai vari ASP.NET e NETWORK SERVICE
  • Controllo il file di configurazione abilitato per l'applicazione e la versione del framework associato all'applicativo

Se fatto ancora ciò non dovesse andare...bhè credo il problema sia troppo legato a "come" o su "cosa" hai sviluppato l'applicativo...e quindi ti invito a postare maggiori informazioni.

  • | Punteggio Post: 5
Pagina 1 di 1 (15 elementi) | RSS

Associazione Culturale DotNetCampania - C.F.: 95127870632

Powered by Community Server (Commercial Edition), by Telligent Systems