servicestack,Asp.net,servicestack" /> servicestack,Asp.net,servicestack" />

Asp.net 如何在ServiceStack中传递DateTimeOffset值

Asp.net 如何在ServiceStack中传递DateTimeOffset值,asp.net,servicestack,Asp.net,servicestack,我得到以下信息: [Route(“/devices/{DeviceId}/punchs/{EmployeeId}/{DateTime}”,“GET,POST”)] 公开课打孔 { 公共字符串设备ID{get;set;} 公共字符串EmployeeId{get;set;} 公共日期时间偏移量日期时间{get;set;} 公共字符串TimeZoneId{get;set;} 公共PunchKind类{get;set;} } 我需要在DateTime部分传递一个完整的DateTimeOffset 以下

我得到以下信息:

[Route(“/devices/{DeviceId}/punchs/{EmployeeId}/{DateTime}”,“GET,POST”)]
公开课打孔
{
公共字符串设备ID{get;set;}
公共字符串EmployeeId{get;set;}
公共日期时间偏移量日期时间{get;set;}
公共字符串TimeZoneId{get;set;}
公共PunchKind类{get;set;}
}
我需要在DateTime部分传递一个完整的
DateTimeOffset

以下方法非常有效:

http://localhost:54146/devices/1001/punches/666/2012-04-01

但是当我试图传递完整的日期时间偏移数据时,它失败了,出现了一个HTTP400错误:请求错误。到目前为止,我已经尝试了以下方法,但出现了相同的错误(即使URL编码也没有帮助):

http://localhost:54146/devices/1001/punches/666/2012-04-01T20:59:00.0000000-03:00
http://localhost:54146/devices/1001/punches/666/2012-04-01 20:59:00.0000000-03:00
http://localhost:54146/devices/1001/punches/666/2012-04-0120:59:00.0000000-03:00
http://localhost:54146/devices/1001/punches/666/2012-04-01T20%3A59%3A00.0000000-03%3A00

而其他排列都会因同样的错误而失败

如何将DateTimeOffset作为URL的一部分传递?

、*、%、&、:
\
默认情况下,ASP.NET不允许在URL中传递。在你的例子中,冒号是罪魁祸首(不管是否编码)。您可以通过将以下内容添加到Web.config文件来修复此问题:

<system.web>
...
    <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,\" />
...
</system.web>

...
...
参考资料:


尝试对日期时间部分进行编码。e、 g.
2012-04-01T20%3A59%3A00.0000000-03%3A00
。。。我将更新这个问题,以表明我已经尝试过了…它非常有效!尽管它在VisualStudioDevelopmentServer上不起作用(现在到底是谁在使用它?)。您必须在IIS或IIS Express下使用它。