web.config 文件中没有 customerror 标记,Customerror 模式设置为 RemoteOnly 作为 web api 2 项目的默认值

Without having customerror tag in web.config file ,Customerror mode is set to RemoteOnly as the default value for web api 2 project

我使用 web 的空模板 api(使用 VS 2013)为我们的应用程序开发服务组件。我正在尝试根据 web.config 文件中使用自定义错误标记设置的值设置 Web api 的错误详细信息策略。默认情况下,web.config 文件中没有自定义错误标记。我使用下面提到的代码在 WebApiConfig class.

的 Register 方法中设置错误详细信息策略
var customErrors = 
        (CustomErrorsSection)ConfigurationManager.GetSection("system.web/customErrors");

      if (customErrors != null)
      {
        switch (customErrors.Mode)
        {
          case CustomErrorsMode.RemoteOnly:
          {
            config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.LocalOnly;
            break;
          }
          case CustomErrorsMode.On:
          {
            config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Never;
            break;
          }
          case CustomErrorsMode.Off:
          {
            config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
            break;
          }
          default:
          {
            config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Default;
            break;
          }
        }

在调试代码时,我注意到即使 web.config 文件的 system.web 部分下没有 customErrors 标记,变量 customErrors 返回的值设置为 mode= RemoteOnly

任何人都可以帮助我知道我缺少什么吗?

the variable customErrors is returning a value set up with mode= RemoteOnly

您得到这个值是因为这是自定义错误元素的默认值。

even though there is no customErrors tag under the system.web section in the web.config file

是的,即使项目中没有配置文件,但总是在 Machine.config 中指定设置。

在 .NET Framework 版本 1.0 和 1.1 的 Machine.config 文件中配置了以下默认 customErrors 元素。

<customErrors mode="RemoteOnly" />

参见:MSDN 文章