Domanda

devo ELMAH di lavoro sul mio (Cassini) server di sviluppo, ed era abbastanza soddisfatto, ma ora che sto cercando di spostare tutto al mio server di produzione (IIS7), gli sguardi luna di miele come essere finito.

devo oltre il " Beccato" con IIS7 , che francamente avrebbe potuto essere migliore evidenziati nella documentazione, e se mi basta usare il registro in memoria allora funziona.

Comunque, sto cercando di farlo utilizzare il registro di SQL Server (come faccio io sul mio sistema di sviluppo), e sto ottenendo un errore lungo le linee di:

  

il permesso di esecuzione è stato negato sull'oggetto ELMAH_GetErrorsXml

Bene, bene. So come concedere autorizzazioni per il database, ma sto veramente fatica a capire quale utente e che proc / tavoli ho bisogno di concedere l'accesso a memorizzati.

La cosa che veramente mi confonde è che io non ho dovuto fare qualcosa di simile per farlo funzionare sul mio server di sviluppo. L'unica differenza che posso vedere è che sul mio server di sviluppo sembra di connettersi come NT AUTHORITY \ IUSR, mentre sul mio server di produzione sembra di connettersi come NT AUTHORITY \ SERVIZIO DI RETE. (E 'solo utilizzando una connessione di fiducia in modo da non ho configurato esplicitamente per farlo - presumo che è a che fare con il server web). Aggiorna : allora ho stabilito che perché sto utilizzando Cassini, in realtà è stato il login come me (un admin) e non IUSR, il che spiega il motivo per cui non ho avuto alcun problema di permessi.

Sul mio server di sviluppo, l'account IUSR è un membro del ruolo database pubblico, e ha accesso alla banca dati (sempre in "pubblico"). non c'è concessione esplicita delle autorizzazioni a livello di oggetto. . [Cfr aggiornamento sopra - questo è irrilevante]

Sul mio server di produzione, ho aggiunto SERVIZIO DI RETE esattamente nello stesso modo (ruolo di database pubblico, l'accesso esplicito al database come "pubblico"). Eppure, ottengo questo errore di autorizzazione. Perché?!! [Cfr aggiornamento sopra - l'unica ragione per cui non avere un errore di autorizzazione è perché sto correndo come amministratore].

E, naturalmente, se il fatto che funziona a livello locale è solo "fortuna", ho bisogno di sapere che SPS / tabelle di concedere l'accesso a. La mia ipotesi è tutti i 3 SP e non al tavolo, ma sarebbe bene (di nuovo) per vedere un po 'di documentazione che rende questo esplicito.

È stato utile?

Soluzione

State fornendo ELMAH con un connectionstring piena nel web.config? Se è così, si dovrebbe sapere esattamente che cosa db all'utente di concedere le autorizzazioni a, giusto? E sì, l'autorizzazione sarebbe quello di eseguire le tre ELMAH stored procedure ...

Ecco una configurazione che ho usato:

<elmah>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah" />
</elmah>

<connectionStrings>
    <add name="elmah" connectionString="Data Source=XXX;Initial Catalog=XXX;User Id=XXX;Password=XXX;" providerName="System.Data.SqlClient" />
</connectionStrings>

Altri suggerimenti

esempio di SQL necessarie per dare esecuzione il permesso al USER_NAME utente:

GRANT EXECUTE ON ELMAH_GetErrorsXml TO USER_NAME
GRANT EXECUTE ON ELMAH_GetErrorXml TO USER_NAME
GRANT EXECUTE ON ELMAH_LogError TO USER_NAME
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top