2017-07-13 23 views
0

工作,我有一个简单的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或我的机器上可以解决这个问题?

+0

代码没有问题。我认为你应该看看机器之间的差异。您是否使用其他操作系统,位版本,区域设置,IIS版本?你使用的是什么版本的Visual Studio(包括更新)?你使用相同的web.config?如果您使用已发布网站的副本,您是否也有这个问题? –

+0

我倾向于同意,代码可以工作或不 - 因此环境变化必须是外部的。只做了一个简单的比较,我们使用的是类似的64位机器,运行win10,VS 2015 update 3并使用IIS express,所以它似乎并不明显。 有趣的是,当我在调试时检查请求对象时,查询字符串为空,这表明为什么过滤器对象为null。但我不确定是什么导致了这种情况。 – Tom

+0

您可以添加一个示例项目,在GitHub上重现问题并在此处发布链接? – HelderSepu

回答

0
+0

如果我尝试,我会得到相同的结果:http://swashbuckletest.azurewebsites.net/api/FromUri/Test1_WithFromUri?id=1&name=2 –