【问题标题】:C# issue with setting array value for sending request to a web service设置数组值以将请求发送到 Web 服务的 C# 问题
【发布时间】:2019-01-18 10:28:42
【问题描述】:

在我的代码中,我正在创建一个 ValuationRequest 对象以发送到 Web 服务并返回一堆日记槽。

其中一个字段 ValuationType 是 SearchType[] 数组,可以是 .sales 或 .lettings,如果未指定,则默认为 sales

            request = new ValuationRequest
            {
                ValuationType = new SearchType[] { SearchType.lettings },
                Postcode = model.Postcode,
                FromDate = DateTime.Now.AddHours(24),
                ToDate = DateTime.Now.AddDays(14)
            };

上面的代码被发送到网络服务并返回销售估值。

如何调试并检查为什么忽略 ValuationType 设置?我试过像 Debug.WriteLine(request.ValuationType.ToString()); 和 Debug.WriteLine(request.ValuationType.GetValue());

但没有返回任何有用的东西。我需要将 ValuationType 设置为出租。

感谢任何帮助

【问题讨论】:

  • 因为它是一个数组,你实际上可能想做request.ValuationType[0].ToString(),因为你说你在这个数组中只有一个项目。但是,您通常不需要检查 ValuationType 是否已设置,它不会帮助您理解为什么它被“忽略”。您可能想要做的是使用 Fiddler 查看实际发送了哪些请求,然后朝着正确的方向继续调查。
  • 首先,在使用 Web 服务时,我强烈建议您设置 Fiddler 来拦截进出该 Web 服务的流量。我最近也遇到了类似的问题,我发送的一些请求参数没有被序列化。所以,让 Fiddler 启动并运行,看看你的属性是否被序列化并通过网络发送。此外,如果您使用 WCF,您的请求中可能有一个名为 ValuationTypeSpecified 的属性。尝试将其设置为 true,看看是否有帮助。
  • 干杯,我将设置 Fiddler。 ValuationTypeSpecified 用于部分服务,但最近已被删除。我以前也有这个问题!但是,似乎我的 ValuationType 实际上并没有被保留足够长的时间来发送到服务。在两个操作之间传递请求对象时,它似乎被丢弃了......

标签: c# arrays debugging enums


【解决方案1】:

您可以使用 linq 聚合运算符 示例:

var debugstr= request.ValuationType.Select(vt=>vt.ToString()).Aggregate( (s1,s2) => s1+ "," s2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多