2015-04-15 6 views
9

Wie aktiviere ich die Anmeldung in Thinktecture IdentityServer v3?Wie aktiviere ich die Anmeldung in Thinktecture IdentityServer v3?

Ich erhalte zur Zeit eine generische Fehlerseite, die sagt "Es gab einen unerwarteten Fehler".

Ich konnte feststellen, dass der generische Fehler von der ErrorPageFilterAttribute zurückgegeben wird, die einige Implementierung von ILog für die Protokollierung der Details, die ich bin, zu lösen scheint.

Ich vermute, es ist eine konkrete Implementierung von ILog, die irgendwie konfiguriert werden muss.

Antwort

8

Ich bin kein Experte, aber ich weiß etwas über IdentityServer, also kann ich vielleicht helfen. IdentityServer v3 unterstützt einige Logging-Provider, zum Beispiel NLog, Log4Net oder Serilog. Sie müssen auswählen, welche Sie verwenden möchten und konfigurieren.

Um eine Probe zu sehen, wie es geht, schlage ich vor, das folgende Projekt IdentityServer3.Samples mit Proben von github herunterzuladen. Dort finden Sie unter anderem WebHost (minimal) Projekt, das NLog verwendet. WebHost (minimal) ist ein Beispiel, das eine grundlegende (minimale) Konfiguration von IdentityServer v3 mit IIS zeigt.

Ein anderes Projekt SelfHost (Minimal with Serilog) zeigt, wie Serilog für die Anmeldung im Szenario verwendet wird, wenn IdentityServer von einer Konsolenanwendung gehostet wird (ohne IIS).

EDIT:

Der Thinktecture.IdentityServer.Core.Logging Namespace mehrere Implementierungen von ILogProvider hat. Hier sind ein paar davon.

Log4NetLogProvider, die log4net verwendet.

NLogLogProvider, die NLog verwendet.

DiagnosticsTraceLogProvider, die System.Diagnostics.Trace verwendet.

TraceSourceLogProvider, die System.Diagnostics.TraceSource verwendet.

Neben der ersten Installation des erforderlichen Pakets oder der Verweise auf die erforderliche Bibliothek für den gewünschten Protokollanbieter müssen Sie ihn außerdem so einrichten, dass er während des Startvorgangs der aktuelle Protokollanbieter wird.

Stellen Sie sicher, dass Sie weiterhin alle Schritte ausführen, die zum Konfigurieren des zugrunde liegenden Pakets oder der Bibliothek erforderlich sind, die Ihr aktueller Protokollanbieter verwendet. Zum Beispiel kann die folgende Konfiguration mit dem DiagnosticsTraceLogProvider verwendet werden:

<configuration> 
    <system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
     <add name="TextWriter" 
      type="System.Diagnostics.TextWriterTraceListener" 
      initializeData="Trace.log" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
</configuration> 

EDIT 2

Da ich meine Antwort einige Details verändert wurden geschrieben. Jetzt verwendet IdentityServer LibLog-Bibliothek und dort finden Sie verschiedene Implementierungen von ILogProvider.

Das Projekt Custom Grants (more customization) zeigt, wie LibLog verwendet wird.

+0

Danke Michal. Ich habe etwas mehr auf Ihre Antwort ausgearbeitet. – Biscuits

+1

Wo ist 'LogProvider von? Wenn ich 'LogProvider' und einen 'Punkt' eintippe, sehe ich 'CreateLogProvider'. Nicht 'SetCurrentLogProvider'. Ich habe 'LibLog' installiert –

+0

@Mohan Meine Antwort ist spezifisch für IdentityServer v3, die von vor 1 Jahr kommt. Möglicherweise verwenden Sie eine andere Version. –

0

Es gibt eine log4net Gotcha, wo es aus irgendeinem Grund nicht auf eine neue Protokolldatei schreibt. Meine startup.cs umfasst buchstäblich das:

Log.Debug("starting log. do not remove this line."); 
LogProvider.GetLogger(typeof(Startup)).Log(LogLevel.Debug,() => "starting up"); 

Ich habe keine Ahnung warum, ich weiß nur, dass ich ein paar Haare herausgerissen, bevor das machte es funktionieren.

6

Nach der Dokumentation der letzten Version HERE können Sie einfach Log.Logger in Ihrem Startup.cs setzen.

Zum Beispiel mit Serilog (installieren Sie es über Nuget von Serilog Suche) Sie können nur Protokoll in eine Datei einrichten, indem diese Codezeile Zugabe in der Configuration Methode der Startup Klasse

Log.Logger = new LoggerConfiguration() 
      .MinimumLevel.Debug() // change with your desired log level 
      .WriteTo.File(@"C:\myPath.txt") // remember to assign proper writing privileges on the file 
      .CreateLogger(); 

Weitere Optionen Siehe oben den Dokumentationslink.

+1

Entschuldigung für das Kommentieren dieser alten Antwort. Damit es mit dem ASP.NET Core 2.0-Projekt funktioniert, habe ich Folgendes getan: 1) Dem Konstruktor der Startup-Klasse wurde der obige Code hinzugefügt. 2) Zusätzliche Parameter "ILoggerFactory logFactory" zur Configure-Methode in der Startup-Klasse hinzugefügt. 3) Innerhalb der Configure-Methode wurde diese Zeile 'logFactory.AddSerilog();' – Thangadurai

+0

hinzugefügt, danke :) – Naigel

Verwandte Themen