使用UTC DateTime向ASP.NET Web API请求GET

时间:2014-09-14 18:39:08

标签: c# asp.net asp.net-web-api

我有以下ASP.NET WebApi控制器:

public class FooController : ApiController 
{
    public string Get(DateTime id)
    {
        ...
    }
}

请求如何格式化?我得到了400s(不良请求)。有人可以给我一个带有日期时间的ApiController Get()的网址示例吗?

这将有效:

http://localhost:2619/api/Foo/2014-09-14

但这不会:

http://localhost:2619/api/Foo/2014-09-14T18:52:00.000Z

也不会编码:

http://localhost:2619/api/Foo/2014-09-14T18%3A52%3A00.000Z

我发送的日期时间需要表示为UTC。

2 个答案:

答案 0 :(得分:1)

:在URL(端口号)中具有特殊含义。你需要逃脱它:

http://localhost:2619/api/Foo/2014-09-14T18%3A52%3A00.000Z

答案 1 :(得分:0)

2014-09-14T18%3A52%3A00.000Z 2014-09-14T18:52:00.000Z 全部工作

允许web.config(https://stackoverflow.com/a/6026291/286330

中的无效字符
<system.web>
    <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
    <pages validateRequest="false" />
</system.web>

和测试行动

public String testdt(DateTime? id)
{
    return id == null ? "Empty" : id.ToString();
}