在用户(“用户A”)可以使用SOAP设置自己的Web服务连接的ASP.NET应用程序中,我让他们插入自己的信封, ,例如,可以沿着这些路线的东西:将数组中的值插入基于密钥的SOAP消息中
//Formatted for Clarity
string soapMessage =
"<soap: Envelope //StandardStuff>
<soap:Header //StandardStuff>
<wsse:UsernameToken>
<wsse: Username>{F1}</wsse:Username>
<wsse: Password Type''>{F2}</wsse:Password>
</wsse:UsernameToken>
</soap:Header>
<soap:Body>
<ref:GetStuff>
<ref:IsActive>{F3}</ref:IsActive>
</ref:GetStuff>
</soap:Body>
</soap:Envelope>"
同时我发送数据的阵列中的“用户B”,从Javascript传下来的JSON,看起来有点像这样:
[
{
key: "F1",
value: "A"
},
{
key: "F2",
value: "B"
},
{
key: "F3",
value: "C"
}
];
该数组在进行反序列化之前以字符串的形式输入(dynamic JsonObject = JsonConvert.DeserializeObject(stringifiedJson);
)。
现在,我希望能够将相应的值插入到信封中,最好具有一定程度的安全性,不会让人们通过在数组中插入奇怪的值来做出时髦的事情(正则表达式可能会我的最后一招)。
到目前为止,我知道这个概念的打造,像这样的字符串(随着SOAP消息中{}
的由{0}, {1} & {2}
被取代):此数组中
string value1 = "A";
string value2 = "B";
string value3 = "C";
var body = string.Format(@soapMessage, value1, value2, value3);
request.ContentType = "application/soap+xml; charset=utf-8";
request.ContentLength = body.Length;
request.Accept = "text/xml";
request.GetRequestStream().Write(Encoding.UTF8.GetBytes(body), 0, body.Length);
但值的量以及可能根据用户的输入以及引用的转换顺序而改变,所以我需要更灵活的东西。我对SOAP调用非常陌生,所以尽可能愚蠢地回答,我们将不胜感激。
您是否评估过任何现有模板引擎,如'nustache'(https://github.com/jdiamond/Nustache)或'handlebars.net'(https://github.com/rexm/Handlebars.Net)? –
我没有自由向这个项目添加新的库。在不需要这些选项的情况下,这样的选择会有偏好。 – Patrick