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="<,>,*,%,&,\" />
...
</system.web>
...
...
参考资料:
2012-04-01T20%3A59%3A00.0000000-03%3A00
。。。我将更新这个问题,以表明我已经尝试过了…它非常有效!尽管它在VisualStudioDevelopmentServer上不起作用(现在到底是谁在使用它?)。您必须在IIS或IIS Express下使用它。