TL; DR Dü sseldor被编码为D& amp;#252; sseldor,Düsseldorf未编码(通过默认的MVC编码)为什么?
我正在用肥皂访问建立一个api。当我收到请求时,我会对所有数据进行编码。 在我结束当前请求之前,我复制了Response.Stream并保存它以进行日志记录。
我注意到杜塞尔多夫是由我的api编码为“Dü sseldorf”。这是预料之中的。 但在我的日志中,它显示Düsseldorf编码为“D& amp;#252; sseldorf”(双重编码)我的日志在MVC序列化写入响应流后保存。
我认为这是因为soap在通过网络发送之前对值进行编码。
所以我的下一个测试是在我的api中关闭html编码。 所以这次杜塞尔多夫正在给肥皂系列化剂。
但它被编码为杜塞尔多夫?
编辑:当我说我打开/关闭编码时我的意思是请求中的每个字段我使用HttpUtility.HtmlEncode(“some field”)。并将其保存到数据库中。然后我用MVC视图返回数据,如下所示:
public ActionResult CreateAccessCode ( CreateAccessCodeRequest request )
{
var response = new Response (request);
return new ContentResult (response);
}
我的问题是当ContentResult方法运行时,它似乎做了一些自己的编码,我想知道那是什么?
答案 0 :(得分:2)
SOAP使用XML - HTML和XML需要稍微不同的编码,但在您的情况下它可能是也可能不是问题。
您手动构建XML的可能性更大。请不要使用字符串连接构造XML - XDocument / XmlDocument更适合它。