工作,我有一个简单的Web API 2控制器,它看起来是这样的:FROMURI不是在localhost
[HttpGet]
[Route("~/My/Stuff")]
[ResponseType(typeof(IEnumerable<MyStuff>))]
public async Task<IHttpActionResult> GetAsync([FromUri]FilterRequest request)
{
var filter = request == null ? null : new Filter(request.Take, request.Skip);
return Ok(await _service.GetAsync(filter).ConfigureAwait(false));
}
我FilterRequest对象是一个简单的DTO,看起来像:
public class FilterRequest
{
public int Take { get; set; }
public int Skip { get; set; }
}
这就允许调用进行,像这样:
http://localhost/My/Stuff?Take=5&Skip=10
我的概率lem是,这不适用于本地。在所有其他环境中,它工作正常,并且在其他开发机器上也能正常工作。但是在我的机器上,request对象每次都是空的。有没有一个设置,可能在IIS或我的机器上可以解决这个问题?
代码没有问题。我认为你应该看看机器之间的差异。您是否使用其他操作系统,位版本,区域设置,IIS版本?你使用的是什么版本的Visual Studio(包括更新)?你使用相同的web.config?如果您使用已发布网站的副本,您是否也有这个问题? –
我倾向于同意,代码可以工作或不 - 因此环境变化必须是外部的。只做了一个简单的比较,我们使用的是类似的64位机器,运行win10,VS 2015 update 3并使用IIS express,所以它似乎并不明显。 有趣的是,当我在调试时检查请求对象时,查询字符串为空,这表明为什么过滤器对象为null。但我不确定是什么导致了这种情况。 – Tom
您可以添加一个示例项目,在GitHub上重现问题并在此处发布链接? – HelderSepu