944 messaggi dal 11 febbraio 2013
ciao
in un sito webform 4.5.2 con asp.net identity ho notato che dopo l'autenticazione il redirect non va all'home ma torna al login ma solo sui dispositivi mobile .

questo nel file di configurazione del sito
<authorization>
       <deny users="?"/>  
    </authorization>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="~/" />  
  </authentication>


mentre nella cartella Account
<location path="Login">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
 <location path="Login.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>


Mentre la pagina di login l'ho personalizzata e slegata dalla master page.

Nel code behind della login ho
protected void Page_Load(object sender, EventArgs e)
    {
        
    }
  
    protected void LogIn(object sender, EventArgs e)
    {
        
        if (IsValid)
        {
            
            var manager = new UserManager();
            TextBox User = (TextBox)LoginUser.FindControl("UserName");
            TextBox Password = (TextBox)LoginUser.FindControl("Password");
            ApplicationUser user = manager.Find(User.Text, Password.Text);
            
            if (user != null)
            {
                IdentityHelper.SignIn(manager, user, false);
                IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
            }
            else
            {
                Literal failText = (Literal)LoginUser.FindControl("FailureText");
                failText.Text = "Utente / password non validi.";
            }
        }

    }


In realtà alcune volte lo fa anche su pc...
potrebbe dipendere dalla stringa di connessione che usa una istanza tipo ".\SQLEXPRESS" ?
Modificato da jjchuck il 30 novembre 2016 10.40 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


potrebbe dipendere dalla stringa di connessione che usa una istanza tipo ".\SQLEXPRESS" ?

Penso di no, ad ASP.NET Identity non importa quale sia il tipo di istanza del database. L'importante è che riesca a collegarsi per verificare username e password.

Il problema potrebbe essere qui:
IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);

Infatti, se arrivi alla pagina /Login o /Login.aspx direttamente, allora non troverai alcuna variabile querystring chiamata "ReturnUrl". Quella viene valorizzata solo se prima passi da un'altra delle pagine protette (es. da home).

Dunque, se il valore di ReturnUrl risultasse vuoto, dovresti sostituirlo con qualcos'altro, ad esempio /

Prova così:
var returnUrl = Request.QueryString["ReturnUrl"];
returnUrl = string.IsNullOrEmpty(returlUrl) = "/" : returnUrl;
IdentityHelper.RedirectToReturnUrl(returnUrl, Response);


ciao,
Moreno

Enjoy learning and just keep making
944 messaggi dal 11 febbraio 2013
Non ho provato ancora...
pero seguendo il debug quando va qui
 public static void RedirectToReturnUrl(string returnUrl, HttpResponse response)
        {
            if (!String.IsNullOrEmpty(returnUrl) && IsLocalUrl(returnUrl))
            {
                response.Redirect(returnUrl);
            }
            else
            {
                response.Redirect("~/");
            }
        }


trova returnUrl null ! Quindi va all'else response.Redirect("~/") e mi rimanda al Login.aspx.

Inoltre mi ha aperto il global.asax di un'altro sito che si trova sulla stessa macchina in Application_Start !!!

Io ho soltanto aggiunto alla tabella AspNetUsers una colonna (UltimoAccesso) e una tabella per il log delle attività!

Infine se apro SQL Management Studio ho il messaggio "Recupero in sospeso" in corrispondenza del database di Aspnet.

Per questo ho pensato di rifare il database con istanza Localdb\v11...

sono confuso
Ora non riesco a fare il log lato server ...
Modificato da jjchuck il 02 dicembre 2016 17.40 -
Modificato da jjchuck il 02 dicembre 2016 17.49 -
944 messaggi dal 11 febbraio 2013
Ho provato questo che mi avevi suggerito
var returnUrl = Request.QueryString["ReturnUrl"];
                returnUrl = string.IsNullOrEmpty(returnUrl) ? "/" : returnUrl;
                IdentityHelper.RedirectToReturnUrl(returnUrl, Response);


ma senza fortuna.

Semplicemente vorrei inibire l'accesso ad utenti non autenticati ma non riesco...

non so se può dipendere dal fatto che sotto Defaul web site di IIS ci sono piu siti...ma sino ad oggi funzionano tutti e tutti consentono l'accesso solamente ad utenti con account.

L'unica differenza è che con questo ultimo sito ho usato visual studio 2015 e nello specifico il template webform con framework 4.5.2 ...insomma il sito che di default viene caricato da visual studio.

e cosa incredibile non riesco ad accedere lato server con nessun account !!!
Noto anche che SQL server agent(SQLEXPRESS) è arrestato e non riesco a farlo ripartire...

non so se tutto questo a un denominatore comune...
Modificato da jjchuck il 02 dicembre 2016 17.58 -
944 messaggi dal 11 febbraio 2013
A volte eseguendo il debug oltre ad aprirmi il global.asax di un alto sito sotto Defautl web site di IIS mi dice anche master page non trovata.

Non ho toccato nulla in iis...non so come venirne fuori...
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
non so, forse mi verrebbe in mente qualcosa vedendo come è configurato IIS. Hai parlato di vari problemi quindi non so identificare la causa precisa.

Comunque, per evitare di perdere altro tempo, fai un altro sito in IIS e vedi se a quel punto funziona.
Lo puoi mettere in ascolto su un'altra porta (es. 8081) o legarlo ad un home host qualsiasi, che poi inserirai nel tuo file hosts per la risoluzione statica.
http://forum.aspitalia.com/forum/post/405149/Ambiente-Test-Asp.aspx

Che intendi quando dici "mi apre il global.asax"? Riesci a scaricare il file da browser e a vedere il suo contenuto?


ciao,
Moreno
Modificato da BrightSoul il 04 dicembre 2016 16.29 -

Enjoy learning and just keep making
944 messaggi dal 11 febbraio 2013
Ciao Moreno...
IIS non ha nessuna configurazione particolare...

mi spiego le mie intranet sono tutte sotto Default Web Site e gli utenti accedono con http:\\ip\nomesito
(lo so è sbagliato ma sono tutti utenti direttamente\indirettamente collegati all'azienda).
per quanto riguarda il global asax intendo proprio che facendo il debug al login seguendo passo passo ad un certo punto apre il file nel punto di session_start di un altro sito (ma non nel browser).

Ho tre siti...i due fatti con vs 2012 funzionano senza redirect...mai avuti.... il terzo (quello che dovrò mettere sotto un dominio) invece mi fa entrare una volta si e 10 no!

Ho ricreato un sito con vs2015 webform (non una applicazione web...sono tutti siti) 4.5.2 e funziona...
(quando dico che funziona intento sempre accedendo con http:\\IP\NomeSito)

Non so cosa fare? posso gestire temporaneamente gli utenti senza usare membership e identity senza sconvolgere il sito?
Cosi intanto lo metto online...

Grazie davvero per avermi risposto

cmq le uniche differenze con gli altri siti le trovo nella stringa di connessione:
nella creazione del database di asp.net tutte hanno datasource=LocalDb1\v11 mentre il sito che mi da problemi
che ho creato con visual studio ha creato datasource=.\sqlexpress (anche se questo lo avrei dovuto fare io per metterlo online)
Modificato da jjchuck il 04 dicembre 2016 17.45 -
944 messaggi dal 11 febbraio 2013
per la pubblicazione del sito sto seguendo il testo della wrox began aspnet capitolo 19 deploying your web site.

penso che non ci sia niente di piu semplice...se ci fosse...

ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.