【问题标题】:Pass null value to ASP.NET web service using HTTP POST?使用 HTTP POST 将空值传递给 ASP.NET Web 服务?
【发布时间】:2011-02-19 00:53:16
【问题描述】:

当通过 HTTP POST 访问 ASP.NET Web 服务时,如何将空值传递给它?

[WebMethod]
public string GetResult(DateTime date, int foo)
{
  //do stuff here
}

使用 HTTP POST 调用此方法时,如何传递空参数?传递空字符串只会使服务器抛出异常,试图将字符串参数转换为日期时间。使 DateTime 参数可以为空(即DateTime? date)似乎不允许通过 HTTP 调用它。

【问题讨论】:

  • SOAP 通常使用 HTTP。您可能的意思是它不允许通过原始 HTTP 调用它。

标签: asp.net web-services


【解决方案1】:

这些都不能有空值。它们都是值类型,即使您尝试使用代码进行设置,也不能设置为 null。我建议发送 DateTime.MinValue 和 0。

【讨论】:

  • int.MinValue 而不是0
  • @slugster - 是的,另一个不错的选择。我也见过使用 MaxValue。我推荐 0 只是因为它是未初始化 int 的默认值,但您的建议也很有用。
  • 我知道,但它们可以为空。所以如果我让参数可以为空,我可以不再通过原始 HTTP POST 调用它吗?
  • @Tom Hamming - 不,他们不能。通过他们的签名,您拥有 DateTime 和 int。那和DateTime不一样?和int? (可以为空)。它们不能以任何方式互换。根据方法签名,您必须发送一个日期时间和一个 int。
  • 这就是我的意思。如果将它们更改为 DateTime?和int?然后它不允许通过原始 HTTP 调用服务;我希望这样做可以让我以某种方式发送空值。无论如何,我已经通过发送很久以前的日期解决了这个问题,然后在服务器端检查那个日期。我会使用 DateTime.MinValue 但我没有从 .NET 调用服务。
猜你喜欢
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 2020-03-24
相关资源
最近更新 更多