示例#1
0
        public static void Register(HttpConfiguration config)
        {
            //支持跨域访问
            //config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 

            //日期格式化
            if (config.Formatters.Count(m => m.GetType() == typeof(DateTypeFormatter)) == 0)
                config.Formatters.Insert(0, new DateTypeFormatter());
            config.Formatters.Remove(config.Formatters.XmlFormatter);

            config.Services.Replace(typeof(IBodyModelValidator), new EntityAwareBodyModelValidator());
            config.BindParameter(typeof(ODataQueryCriteria), new ODataQueryCriteriaBinder());

            #region PUT Id 参数绑定

            //PUT 时,Id 需要从路由中获取,这里需要提供一个额外的参数绑定实现。
            config.ParameterBindingRules.Add(parameter =>
            {
                Type parameterType = parameter.ParameterType;
                if (typeof(Entity).IsAssignableFrom(parameterType))
                {
                    var formatters = parameter.Configuration.Formatters;
                    var bodyModelValidator = parameter.Configuration.Services.GetBodyModelValidator();
                    return new IdFromRouteFormatterParameterBinding(parameter, formatters, bodyModelValidator);
                }
                return null;
            });
            //上述方案,也可以替换以下服务实现。
            //config.Services.Replace(typeof(IActionValueBinder), new iWSActionValueBinder()); 

            #endregion
        }
示例#2
0
 public static void Register(HttpConfiguration config)
 {
     config.MapHttpAttributeRoutes();
     config.BindParameter(typeof(DashboardRequest), new DashboardRequestModelBinderAttribute());
     // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
     // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
     // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
     //config.EnableQuerySupport();
 }
        public void BindParameter_InsertsModelBinderProviderInPositionZero()
        {
            // Arrange
            HttpConfiguration config = new HttpConfiguration();
            Type type = typeof(TestParameter);
            IModelBinder binder = new Mock<IModelBinder>().Object;

            // Act
            config.BindParameter(type, binder);

            // Assert
            SimpleModelBinderProvider provider = config.Services.GetServices(typeof(ModelBinderProvider)).OfType<SimpleModelBinderProvider>().First();
            Assert.Equal(type, provider.ModelType);
        }
示例#4
0
        public static void Register(HttpConfiguration config, string area = null)
        {
            if (Dot.Utility.Config.ConfigHelper.GetAppSettingOrDefault("EnableCors", false))
            {
                WebApiCors.EnableCors(config);
            }

            //日期格式化
            if (config.Formatters.Count(m => m.GetType() == typeof(DateTypeFormatter)) == 0)
            {
                config.Formatters.Insert(0, new DateTypeFormatter());
                config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            }
            config.Formatters.Remove(config.Formatters.XmlFormatter);


            config.Services.Replace(typeof(IBodyModelValidator), new EntityAwareBodyModelValidator());
            config.BindParameter(typeof(ODataQueryCriteria), new ODataQueryCriteriaBinder());

            #region PUT Id 参数绑定

            //PUT 时,Id 需要从路由中获取,这里需要提供一个额外的参数绑定实现。
            config.ParameterBindingRules.Add(parameter =>
            {
                Type parameterType = parameter.ParameterType;
                if (typeof(Entity).IsAssignableFrom(parameterType))
                {
                    var formatters = parameter.Configuration.Formatters;
                    var bodyModelValidator = parameter.Configuration.Services.GetBodyModelValidator();
                    return new IdFromRouteFormatterParameterBinding(parameter, formatters, bodyModelValidator);
                }
                return null;
            });
            //上述方案,也可以替换以下服务实现。
            //config.Services.Replace(typeof(IActionValueBinder), new iWSActionValueBinder()); 

            #endregion

            AreaWebApiConfig.Register(config, area);
        }
 private static void InitializeModelBinders(HttpConfiguration httpConfiguration)
 {
     var abpApiDateTimeBinder = new AbpApiDateTimeBinder();
     httpConfiguration.BindParameter(typeof(DateTime), abpApiDateTimeBinder);
     httpConfiguration.BindParameter(typeof(DateTime?), abpApiDateTimeBinder);
 }