2013-06-21 47 views
2
的DateTimeOffset值

我已經得到了以下消息:如何通過在ServiceStack

[Route("/devices/{DeviceId}/punches/{EmployeeId}/{DateTime}", "GET,POST")] 
public class Punch 
{ 
    public string DeviceId { get; set; } 
    public string EmployeeId { get; set; } 
    public DateTimeOffset DateTime { get; set; } 
    public string TimeZoneId { get; set; } 
    public PunchKind Kind { get; set; } 
} 

我需要在日期時間部分均經過了完全DateTimeOffset ...

以下作品完美:

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

但是,當我嘗試通過全日期時間偏移數據它失敗與HTTP 400錯誤:錯誤的請求。我試過到目前爲止用了同樣的錯誤(甚至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的一部分?

+0

嘗試編碼日期時間的一部分。例如'2012-04-01T20%3A59%3A00.0000000-03%3A00' – muratgu

+0

我已經完成了...我會更新問題以表明我已經試過了... – Loudenvier

回答

3

<,>,*,%,&,:\默認情況下是ASP.NET在URL中不允許的。就你而言,冒號是罪魁禍首(不管它是否被編碼都沒關係)。您可以通過添加以下到您的Web.config文件修復:

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

參考文獻:

+0

它工作完美!儘管它不適用於Visual Studio開發服務器(現在誰還在使用它?)。您必須在IIS或IIS Express下使用它。 – Loudenvier

相關問題