Habilitación de CORS a través de Web.config vs WebApiConfig y los atributos del controlador

Parece que hay dos formas funcionalmente diferentes para habilitar el intercambio de solicitudes de origen cruzado en Web API 2.

Una es importarSystem.Web.Http.Cors, decorar un controlador con elEnableCors atribuir y escribirconfig.EnableCors() en la WebApiConfig:

[EnableCors(origins: "http://111.111.111.111", headers: "*", methods: "*")]
public class GenericController : ApiController
{
    // etc.

El otro esmodificar el Web.config:

<system.webServer>
     <httpProtocol>
         <customHeaders>
            <add name="Access-Control-Allow-Origin" value="http://111.111.111.111" />
            <add name="Access-Control-Allow-Methods" value="*" />
            <add name="Access-Control-Allow-Headers" value="*" />

¿Existe una diferencia funcional entre estos dos enfoques diferentes? ¿Cuál es correcto? ¿No logran lo mismo? Si se utilizan ambos métodos para habilitar CORS, ¿explotarán las cosas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta