@@ -26,16 +26,38 @@ public static class CorsHttpConfigurationExtensions
2626 /// <param name="httpConfiguration">The <see cref="HttpConfiguration"/>.</param>
2727 public static void EnableCors ( this HttpConfiguration httpConfiguration )
2828 {
29- EnableCors ( httpConfiguration , null ) ;
29+ EnableCors ( httpConfiguration , null , false ) ;
30+ }
31+
32+ /// <summary>
33+ /// Enables the support for CORS.
34+ /// </summary>
35+ /// <param name="httpConfiguration">The <see cref="HttpConfiguration"/>.</param>
36+ /// <param name="rethrowExceptions">Indicates whether upstream exceptions should be rethrown</param>
37+ public static void EnableCors ( this HttpConfiguration httpConfiguration , bool rethrowExceptions )
38+ {
39+ EnableCors ( httpConfiguration , null , rethrowExceptions ) ;
3040 }
3141
3242 /// <summary>
3343 /// Enables the support for CORS.
3444 /// </summary>
3545 /// <param name="httpConfiguration">The <see cref="HttpConfiguration"/>.</param>
3646 /// <param name="defaultPolicyProvider">The default <see cref="ICorsPolicyProvider"/>.</param>
37- /// <exception cref="System.ArgumentNullException">httpConfiguration</exception>
3847 public static void EnableCors ( this HttpConfiguration httpConfiguration , ICorsPolicyProvider defaultPolicyProvider )
48+ {
49+ EnableCors ( httpConfiguration , defaultPolicyProvider , false ) ;
50+ }
51+
52+ /// <summary>
53+ /// Enables the support for CORS.
54+ /// </summary>
55+ /// <param name="httpConfiguration">The <see cref="HttpConfiguration"/>.</param>
56+ /// <param name="defaultPolicyProvider">The default <see cref="ICorsPolicyProvider"/>.</param>
57+ /// <param name="rethrowExceptions">Indicates whether upstream exceptions should be rethrown</param>
58+ /// <exception cref="System.ArgumentNullException">httpConfiguration</exception>
59+ public static void EnableCors ( this HttpConfiguration httpConfiguration , ICorsPolicyProvider defaultPolicyProvider ,
60+ bool rethrowExceptions )
3961 {
4062 if ( httpConfiguration == null )
4163 {
@@ -49,11 +71,11 @@ public static void EnableCors(this HttpConfiguration httpConfiguration, ICorsPol
4971 httpConfiguration . SetCorsPolicyProviderFactory ( policyProviderFactory ) ;
5072 }
5173
52- AddCorsMessageHandler ( httpConfiguration ) ;
74+ AddCorsMessageHandler ( httpConfiguration , rethrowExceptions ) ;
5375 }
5476
5577 [ SuppressMessage ( "Microsoft.Reliability" , "CA2000:Dispose objects before losing scope" , Justification = "Caller owns the disposable object" ) ]
56- private static void AddCorsMessageHandler ( this HttpConfiguration httpConfiguration )
78+ private static void AddCorsMessageHandler ( this HttpConfiguration httpConfiguration , bool rethrowExceptions )
5779 {
5880 object corsEnabled ;
5981 if ( ! httpConfiguration . Properties . TryGetValue ( CorsEnabledKey , out corsEnabled ) )
@@ -64,7 +86,7 @@ private static void AddCorsMessageHandler(this HttpConfiguration httpConfigurati
6486 if ( ! config . Properties . TryGetValue ( CorsEnabledKey , out corsEnabled ) )
6587 {
6688 // Execute this in the Initializer to ensure that the CorsMessageHandler is added last.
67- config . MessageHandlers . Add ( new CorsMessageHandler ( config ) ) ;
89+ config . MessageHandlers . Add ( new CorsMessageHandler ( config , rethrowExceptions ) ) ;
6890
6991 ITraceWriter traceWriter = config . Services . GetTraceWriter ( ) ;
7092
0 commit comments