具有多个键=值项的 URI 的 C# DataContract 反序列化

C# DataContract Deserialization of URIs with multiple key=value terms

我正在使用 SoapUI 将 URI 发送到 C# WCF Web 服务(不是 REST),该服务使用默认的反序列化程序来处理带有 DataContract ([DataContract (NameSpace ="mynamespace")) 注释的 DTO。

URI 的查询组件中可能包含多个键=值项: 示例:lookfor://3904?foo=this & that&bar=6

这是处理这个问题的标准、专业的方法吗?我用谷歌搜索了又搜索,但找不到处理具有多个键=值项的 URI 的示例。

另一种方法是对值中的“&”符号进行双重编码,并对作为分隔符的“&”符号进行单一编码,但我确实看到(在谷歌搜索时)永远不要双重编码的警告。

让我们分解一下。

您的值是 foo = this&thatbar = 6

您需要做的第一件事是 URL 对值进行编码,因此您会得到 foo = this%26thatbar = 6

然后将这些值设置为查询字符串参数,如

lookfor://3904?foo=this%26that&bar=6

现在我们需要 XML 对整个 URL 进行编码,结果是

lookfor://3904?foo=this%26that&bar=6