Domanda

Volevo sapere se era possibile mantenere la variabile Session creata in ASP.NET + C #?

Lo chiedo perché ogni volta che apporto una piccola modifica alla mia applicazione e devo ricostruirla, devo accedere di nuovo e fare un po 'di operazione dopo che ... ci vuole molto tempo.

Se non c'è modo di aggirare, posso impostare una modalità di test in cui sarò sempre connesso, o automatizzare la procedura di accesso ... ma mi farebbe risparmiare tempo per mantenere la Sessione dopo un build.

È stato utile?

Soluzione

Questa risposta è wiki della comunità in modo da non generare alcuna reputazione, in quanto è effettivamente una rielaborazione della risposta di DOK. Se ti piace, per favore vota la risposta di DOK.

@Dok, se vuoi modificare la tua risposta per incorporare una qualsiasi di queste cose, per favore fallo, ed eliminerò volentieri questa risposta. :)

DOK, come menzionato nei miei commenti alla tua risposta (e forse qualche aiuto per la tua soluzione), potresti voler fare quanto segue:

#if DEBUG //As mentioned by DOK in the comments. If you set debug to false when building for deployment, the code in here will not be compiled.
protected void Page_PreInit(object sender, EventArgs e)
{
  bool inDevMode = false;
  inDevMode = bool.Parse(ConfigurationManager.AppSettings["InDevMode"]); //Or you could use TryParse

  if(inDevMode)
  {
    // Fake authentication so I don't have to create a damn Login page just for this.
    System.Web.Security.FormsIdentity id = new FormsIdentity(new FormsAuthenticationTicket("dok", false, 30));
    string[] roles = { "a" };
    HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
  }
}
#endif

Per garantire ulteriormente che non si esegua la distribuzione accidentale con questo attivo, si dovrebbero avere le impostazioni dell'app in file di configurazione separati (così come la sezione di debug). Se si utilizza Web Deployment progetti, quindi puoi inserire le tue impostazioni di configurazione dev in un file e i tuoi file di configurazione live in un altro (di solito è dev.config e live.config!).

ad es. nel tuo web.config:

<appSettings file="dev.config"/>

Nel tuo dev.config:

<appSettings>
  <add key="InDevMode" value="true" />
</appSettings>

Nel tuo live.config:

<appSettings>
  <add key="InDevMode" value="false" />
</appSettings>

Altri suggerimenti

È possibile modificare il server di prova per utilizzare la sessione State Server o SQL Server modalità stato , che sopravviverà al riavvio dell'applicazione.

Ho usato questo trucco quando non volevo occuparmi dell'autenticazione durante lo sviluppo:

protected void Page_PreInit(object sender, EventArgs e)
    {
        // Fake authentication so I don't have to create a damn Login page just for this.
        System.Web.Security.FormsIdentity id = new FormsIdentity(new FormsAuthenticationTicket("dok", false, 30));
        string[] roles = { "a" };
        HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
    }

Funzionerà solo sulla pagina in cui lo hai inserito, anche se potresti aggiungerlo a una pagina di base.

Devi assolutamente ricordarti di rimuoverlo prima di promuovere il codice per testare / QA / UAT / prod!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top