如果web.config文件中没有自定义错误标记,则将自定义错误模式设置为RemoteOnly作为web api 2项目的默认值

时间:2015-04-17 18:59:26

标签: asp.net-web-api2

我使用web api的空模板(使用VS 2013)为我们的应用程序开发服务组件。我正在尝试使用自定义错误标记基于web.config文件中的值设置为web api设置错误详细信息策略。默认情况下,web.config文件中不存在自定义错误标记。我使用下面提到的代码在WebApiConfig类的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的值

任何人都可以帮助我知道我遗失了什么吗?

1 个答案:

答案 0 :(得分:1)

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