2016-05-16 13 views
1

Kontext füge hinzu:CORS Problem, wenn log4net Config

Ich habe ein einfaches Web-API-Projekt mit einem Controller und eine Aktion. In der Kopfzeile jeder Anfrage füge ich ein Autorisierungstoken hinzu. Alles funktioniert wie erwartet. Ich kann ein Token basierend auf einigen Anmeldeinformationen anfordern und es verwenden, um HTTP-Anforderungen erfolgreich durchzuführen.

Problem: Wenn ich folgend in der web.config hinzufügen:

<log4net> 
<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <file value="logfile.txt" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date: %-5level – %message%newline" /> 
    </layout> 
</appender> 
<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="FileAppender" /> 
</root> 
</log4net> 

ich die folgende Fehlermeldung erhalten:

XMLHttpRequest cannot load http://localhost:4042/token. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. The response had HTTP status code 500. 

Wenn ich die Konfiguration für log4net alles entfernen arbeitet als erwartet.

Hinweis: Ich habe keine Einstellung in web.config, die Header in einer Anfrage hinzufügt.

Startup.cs ist der einzige Punkt, in dem Projekt wurden laut angegebenem:

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

Frage: Wie funktioniert die log4net beziehen Konfiguration Preflight-Anfragen? (basierend auf meinem begrenzten Wissen über das ASP.NET-Framework würde ich sagen, es ist Unsinn). Gibt es eine Feinheit, die ich vermisse?

+0

Meine Vermutung ist, dass die log4net-Konfiguration eine Ausnahme verursacht, die zu einer 500-Antwort führt, die nicht den CORS-Header hat. Finde heraus, was die Ausnahme ist. – user1620220

+0

Ihr 'log4net'-Tag ist nicht geschlossen, ist das ein Tippfehler? – stuartd

+0

@stuartd, ja, es ist ein Copy-Paste-Fehler. Ich habe es in meinem Code. Entschuldigung dafür. –

Antwort

1

Ich schaute in den webconfig meines Projektes und es ist ein Teil von einem Arbeits web.config

<configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
     </configSections> 
     <log4net> 
     <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
      ... 
     </log4net> 

Vielleicht verpasst configSection?

+0

Vielen Dank. Thant war das Problem, das ich hatte. –

0

eine externe Einstellungsdatei verwenden zur Vermeidung des Problems:

Beim Start nennen:

XmlConfigurator.Configure(); 

In Web.config geben log4net.config in appSettings:

<add key="log4net.Config" value="Log.config" /> 

Fügen Sie in der Datei Log.config die folgende Konfiguration ein:

<log4net> 
<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <file value="logfile.txt" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date: %-5level – %message%newline" /> 
    </layout> 
</appender> 
<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="FileAppender" /> 
</root> 
<log4net>