正在向ASP.NET Web API请求具有UTC DateTime的GET

本文关键字:UTC DateTime GET 请求 API ASP NET Web | 更新日期: 2023-09-27 18:21:46

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

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

请求需要如何格式化?我得到了400秒(错误请求)。有人能给我举一个ApiControllerGet()的URL的例子吗?

这将起作用:

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

我发送的DateTime需要用UTC表示。

正在向ASP.NET Web API请求具有UTC DateTime的GET

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

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

2014-09-14T18%3A52%3A00.000Z2013-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();
}