C# 版本控制更改IEnumerable参数的模型绑定行为
我最近在我的项目中引入了包C# 版本控制更改IEnumerable参数的模型绑定行为,c#,asp.net,asp.net-web-api,asp.net-core,owin,C#,Asp.net,Asp.net Web Api,Asp.net Core,Owin,我最近在我的项目中引入了包Microsoft.AspNet.WebApi.Versioning(),以便对我的API进行版本控制 它就像一个符咒,但不幸的是,它有一个奇怪的副作用。它将IEnumerableuri参数的默认参数值从null更改为空的列表。我使用包存储库中的基本示例将其隔离 呼叫返回 ids为null:True如果版本控制未启用(以前的行为) ids为null:False如果启用了版本控制 恐怕它也会改变其他行为。如何保留版本特性,但使用默认模型绑定 控制器 // breaks [
Microsoft.AspNet.WebApi.Versioning
(),以便对我的API进行版本控制
它就像一个符咒,但不幸的是,它有一个奇怪的副作用。它将IEnumerable
uri参数的默认参数值从null
更改为空的列表
。我使用包存储库中的基本示例将其隔离
呼叫返回
ids为null:True
如果版本控制未启用(以前的行为)
ids为null:False
如果启用了版本控制
恐怕它也会改变其他行为。如何保留版本特性,但使用默认模型绑定
控制器
// breaks
[Microsoft.Web.Http.ApiVersion("1.0")]
[RoutePrefix( "api/v{version:apiVersion}/helloworld" )]
// working
//[RoutePrefix("api/v1/helloworld")]
public class HelloWorldController : ApiController
{
[Route]
public IHttpActionResult Get([FromUri] IEnumerable<Guid> ids)
{
return Ok($"ids is null: {ids == null}");
}
}
复制
git clone https://github.com/smstuebe/webapi-versioning-parameter-binding.git
git checkout working
# if you want to break it
git checkout broken
git clone https://github.com/smstuebe/webapi-versioning-parameter-binding.git
git checkout working
# if you want to break it
git checkout broken