Frage

Ich habe ELMAH Arbeit an meinem (Cassini) Entwicklungs-Server, und war ganz zufrieden damit, aber jetzt, dass ich versuche, alles zu meinen Produktionsserver (IIS7) zu bewegen, die Flitterwochen sehen aus wie nicht vorbei.

Ich habe die " gotcha“mit IIS7 , die ehrlich gesagt besser in der Dokumentation hervorgehoben worden sein könnte, und wenn ich nur die in-Memory-Protokoll verwenden, dann funktioniert es.

Doch ich versuche, es zu bekommen, die SQL Server-Protokoll zu verwenden (wie ich auf meinem Entwicklungssystem zu tun), und ich bin immer einen Fehler entlang der Linien von:

  

Die EXECUTE-Berechtigung für das Objekt verweigert wurde ELMAH_GetErrorsXml

Nun, in Ordnung. Ich weiß, wie Datenbank-Berechtigungen zu erteilen, aber ich bin zu kämpfen, wirklich zu verstehen, die Benutzer und die gespeicherte Procs / Tabellen I gewähren müssen, um Zugang zu.

Die Sache, die mir wirklich verwirrend ist, dass ich nichts zu tun, wie dies muß es an der Arbeit auf meinem Entwicklungs-Server zu erhalten. Der einzige Unterschied, den ich sehen kann, ist, dass auf meinem Entwicklungs-Server als NT AUTHORITY \ IUSR zu verbinden scheint, während auf meinem Produktions-Server scheint es, als NT AUTHORITY \ NETWORK SERVICE zu verbinden. (Es ist mit nur einer vertrauenswürdigen Verbindung also habe ich es nicht explizit konfiguriert, das zu tun - ich nehme an, es ist mit dem Web-Server zu tun). UPDATE : Ich habe das seit gegründet, weil ich bin mit Cassini, es tatsächlich in wie mich anmelden (ein Admin) und nicht IUSR, was erklärt, warum ich keine Erlaubnis Probleme bekommen haben.

Auf meinem Entwicklungsserver, das IUSR-Konto ist ein Mitglied der öffentlichen Datenbank Rolle und hat Zugriff auf die benötigte Datenbank (wieder als „public“). Es gibt keine explizite Gewährung von auf Objektebene Berechtigungen. . [Siehe Update oben - das ist irrelevant]

Auf meinem Produktions-Server, ich habe in NETWORK SERVICE hinzugefügt genau die gleiche Art und Weise (öffentliche Datenbankrolle, expliziten Zugriff auf die Datenbank als „public“). Doch ich diese Berechtigung Fehler. Warum?!! [Siehe Update oben - der einzige Grund, warum ich nicht erhalten eine Erlaubnis Fehler ist, weil ich als Admin renne].

Und natürlich, wenn die Tatsache, dass es vor Ort arbeitet, ist nur „Glück“, will ich wissen müssen, welche SPs / Tabellen Zugriff zu gewähren. Meine Vermutung wäre, alle drei SPs und nicht die Tabelle, aber es wäre gut, (wieder) eine Dokumentation zu sehen, die diese explizit macht.

War es hilfreich?

Lösung

bieten Sie ELMAH mit einem vollen Connectionstring in der web.config? Wenn ja, sollten Sie genau wissen, was db Benutzerberechtigungen zu gewähren, nicht wahr? Und ja, die Erlaubnis wäre, die drei ELMAH gespeicherten Prozeduren auszuführen ...

Hier ist eine Konfiguration, die ich verwendet habe:

<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>

Andere Tipps

Beispiel von SQL benötigte Erlaubnis für den Benutzer USER_NAME geben ausführen:

GRANT EXECUTE ON ELMAH_GetErrorsXml TO USER_NAME
GRANT EXECUTE ON ELMAH_GetErrorXml TO USER_NAME
GRANT EXECUTE ON ELMAH_LogError TO USER_NAME
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top