Ciao,
se modifico il metodo in questo modo
public string getIDCentro()
{return "00005"}
non ho problemi
Lasciamo perdere questa cosa per il momento. Per me è semplicemente troppo strano che leggere una variabile di sessione scateni la basic authentication.
La basic authentication è una funzionalità trasversale che, in questo caso, è offerta da IIS che non ne sa nulla del fato che tu stia restituendo una stringa o il conteuto di una variabile di Sessione. Per il momento penso che tu sia stato tratto in inganno da uno dei test che hai fatto.
La cosa strana è che ho provato ad attivare un'hosting di prova su myasp.net e lì funziona tutto perfettamente, mentre su Register.it NO
Beh, questo si può spiegare facilmente se il webserver IIS è stato configurato in maniera differente dai due hosting provider.
La basic authentication non è una funzionalità predefinita in IIS, ma va abilitata o disabilitata dalla console.
Come leggi nella documentazione:
https://www.iis.net/configreference/system.webserver/security/authentication/basicauthentication
The default installation of IIS 7 and later does not include the Basic authentication role service. To use Basic authentication on Internet Information Services (IIS), you must install the role service.
Quindi io presumo che su myasp.net l'abbiano installato e su Register no. Come conseguenza, il tuo nodo security/authentication/basicAuthentication che hai nel web.config ha effetto solo su myasp.net. Se anche Register avesse installato il modulo di Basic Authentication osserveresti lo stesso identico comportamento.
Ora se disabilito basicAuthentication
Ok, questa è la strada giusta. Disabilita la basic authentication eliminando del tutto il nodo <security>.
la chiamata ajax al controller che scrive la variabile di sessione non va a buon fine (HTTP 401 Unauthorized)
E' normale che sia così, significa che non ti sei autenticato. Ora che hai disabilitato la basic authentication è in essere un'
altro tipo di autenticazione: la Forms Authentication che hai configrato così dal tuo web.config.
<authentication mode="Forms">
<forms loginUrl="~/Utenti/Login" timeout="30" slidingExpiration="true" />
</authentication>
Configurata così, la Forms Authentication non ti lascerà accedere a nessuna pagina del sito a meno che tu non ti sia loggato dalla pagina /Utenti/Login. Hai implementato questa pagina? Come verifichi che le credenziali siano corrette? Usi un modo personalizzato oppure sfrutti ASP.NET Identity, Membership API o altro?
Quando ti sei autenticato correttamente, ASP.NET emetterà un cookie di autenticazione che il browser restituirà al server in tutte le sue successive richieste. Grazie a questo cookie, l'utente risulterà autenticato e la tua richiesta ajax andrà a buon fine.
ciao,
Moreno
Modificato da BrightSoul il 19 marzo 2017 09.51 -