【问题标题】:CORS issue when adding log4net config添加 log4net 配置时出现 CORS 问题
【发布时间】:2016-05-16 12:50:16
【问题描述】:

上下文:

我有一个带有控制器和动作的简单 Web API 项目。 在每个请求的标头中,我添加了一个授权令牌。 一切都按预期工作。我可以根据一些凭据请求令牌,并使用它成功发出 HTTP 请求。

问题: 当我在 web.config 中添加以下内容时:

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

我收到以下错误:

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.

如果我删除 log4net 的配置,一切都会按预期工作。

注意:我在 web.config 中没有任何在请求中添加标头的设置。

Startup.cs 是我指定的项目中唯一的点:

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

问题: log4net 配置与预检请求有何关系? (基于我对 ASP.NET 框架的有限知识,我会说这是无稽之谈)。有没有我错过的微妙之处?

【问题讨论】:

  • 我的猜测是 log4net 配置导致异常,这导致 500 响应没有 CORS 标头。找出异常是什么。
  • 你的log4net 标签没有关闭,是不是打错了?
  • @stuartd,是的,这是一个复制粘贴错误。我的代码中有它。对此深表歉意。

标签: c# asp.net-web-api log4net owin-middleware


【解决方案1】:

我查看了我的项目的 webconfig,其中有一部分来自工作中的web.config

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

也许你错过了configSection

【讨论】:

  • 谢谢。这就是我遇到的问题。
【解决方案2】:

使用外部设置文件来避免问题:

在启动时,调用:

XmlConfigurator.Configure();

在您的 Web.config 中,在 appSettings 中指定 log4net.Config:

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

在 Log.config 文件中放置您的配置:

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

【讨论】:

    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 2011-04-09
    • 2011-02-17
    • 1970-01-01
    • 2021-04-01
    • 2015-12-15
    • 2011-04-06
    • 2017-04-11
    相关资源
    最近更新 更多