ServiceStack dateTime避免问题



看起来ServiceStack不喜欢我使用DateTime属性作为我的请求中的参数。我收到了"不好的请求"消息...例外没有其他有用的细节。内部异常显示HTML代码(截断),只是说"类型定义应以" {"期望序列化类型'errorresponse'..."

开始

在我的客户中:

    private DateTime _selectedReportDate;
    public DateTime SelectedReportDate
    {
        get { return _selectedReportDate; }
        set { SetProperty(ref _selectedReportDate, value); }
    }
    ....
    var txResults = await ServiceClient.Instance.GetAsync(new PaymentSummaries()
    {
        Date = SelectedReportDate
    });

服务模型:

[Route("/report/paymentsummaries/{Date}", "GET")]
public class PaymentSummaries : IReturn<List<PaymentSummary>>
{
    public DateTime Date { get; set; }
}

服务接口:

[Authenticate]
public class PaymentSummariesService : Service
{
    public List<PaymentSummary> Get(PaymentSummaries request)
    {
        var results = Db.SqlList<Data.OrmLite.SpResponse.ReconcilePaymentSummaryRecord>("EXEC [Report].[ReconcilePaymentsSummary] @date", new { date = request.Date });
        return results.ConvertAll(x => x.ConvertTo<PaymentSummary>());
    }
}

我会遇到"不良请求"错误。

当我更改时:

Date = SelectedReportDate

to

Date = new DateTime()

在客户端代码中,它确实有效,并出于某种原因键入服务接口代码。

update

这是请求标题:

获取 http://devservicestack:44345/report/paymentmentmaries/2016-11-30t13%3A09%3A15.6795974-05%3A00 http/1.1接受编码:GZIP,DEFLATE ACCEPT:application/json 用户代理:ServiceStack .NET客户端4.54主机:DevServiceStack:44345 cookie:ss-id = f4bt4AmonHyFQCFQMSMR;ss-pid = k6ajma17xw31qivy1z8v; ss-opt = temp

响应标头告诉我:

[httpexception(0x80004005):潜在危险的请求。 从客户端检测到值(:)。]
system.web.httprequest.validateinputifrequiredbyconfig() 9827624
system.web.pipelinestepmanager.validatehelper(httpcontext上下文) 53

在ASP.NET中托管ServiceStack时(与自我托管相对)时,ASP.NET使用XSS安全检查。为了解决这个问题,我可以允许特定字符:

  <system.web>
    <httpRuntime targetFramework="4.6.2" requestPathInvalidCharacters="&lt;,>,*,%,&amp;,,?" />
  </system.web>

(省略":"在RequestPathinvalidcharacter中)

或:

  <system.web>
    <httpRuntime targetFramework="4.6.2" requestValidationMode="2.0" requestPathInvalidCharacters="" />
  </system.web>

禁用整个应用程序的请求验证。

最新更新