Perché la mia iscrizione costume e provider di ruoli di lavoro a livello locale, ma non riescono dopo la distribuzione?

StackOverflow https://stackoverflow.com/questions/9301572

Domanda

Ho creato un abbonamento personalizzato e provider di ruoli per sfruttare l'autenticazione e l'autorizzazione integrata in ASP.NET MVC 4. Tutto stava andando liscio durante lo sviluppo della mia domanda fino a quando ho provato la distribuzione in un ambiente di prova.

Il lancio l'applicazione in modalità di debug da Visual Studio funziona perfettamente bene. Tuttavia, Ho quindi utilizzare distribuzione uno scatto di Visual Studio per caricare la mia applicazione in un'istanza di IIS in esecuzione sulla mia macchina di sviluppo. Sono in grado di caricare l'applicazione nel browser, ma l'autenticazione non funziona più. Utilizzando Fiddler, vedo che un cookie viene inviato, ma non riesco a porzioni di accesso del sito che sono limitate usando [Autorizza] attributi.

Di seguito è riportato un frammento di rilevante dal mio web.config.

<membership defaultProvider="PonosMembershipProvider">
  <providers>
    <clear />
    <add name="PonosMembershipProvider" type="Ponos.Identity.PonosMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/Ponos" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" type="Ponos.Identity.PonosRoleProvider" connectionStringName="DefaultConnection" applicationName="/Ponos" />
  </providers>
</roleManager>

Inoltre, ho impostato il nome dell'applicazione sia provider personalizzato con la logica come segue:

public override string ApplicationName
    {
        get
        {
            return "Ponos";
        }
        set
        {
            throw new NotImplementedException();
        }
    }

Inoltre, dopo aver attaccato alla istanza in esecuzione di IIS, vedo che le informazioni inserite nel modulo passa la convalida, ma che non ha accesso è concesso a pagine che hanno limitato l'accesso autorizzato.

Inoltre, il database utilizzato per la distribuzione è popolato con gli stessi valori come il database di sviluppo.

Perché i fornitori non avrebbero funzionato dopo la distribuzione, quando funzionano bene nell'ambiente di debug?

È stato utile?

Soluzione 2

Il problema è stato mostrato solo quando il mio server è stato implementato accede direttamente dal suo IP. Quando ho aggiunto una voce di host mappatura di un dominio al IP e successivamente impostare lo stesso dominio nel mio cookie di autenticazione il problema è stato risolto.

Non sono sicuro perché non ho potuto accedere il cookie se il dominio è un indirizzo IP, ma questo ha riparato il problema.

Altri suggerimenti

"Vedo che le informazioni inserite nel modulo passa la convalida, ma che non ha accesso è concesso a pagine che hanno limitato l'accesso autorizzato".

Sembra problema di autorizzazioni!

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