微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – ASMX Web服务对传入请求使用错误编码

我的.NET ASMX Web服务正在接受来自我无法直接控制的客户端的请求.它正在发送一个如下所示的请求:

POST /Service.asmx HTTP/1.1
Connection: Keep-Alive
Pragma: no-cache
Content-Length: 1382
Content-Type: text/xml
Accept: text/xml
Host: localhost
User-Agent: Borland SOAP 1.1
SOAPAction: "http://domain.com/InsertRecords"

<?xml version="1.0"?>
<SOAP-ENV:Envelope... <v>ÄLMÅ BÄCK</v></SOAP-ENV:Envelope>

在我的WebMethod中,字符串ÄLMÅBÄCK被提到了? B ?? CK – 典型的编码混乱.

在我的测试中,我发现如果我只是调整内容类型的标题,一切都很好:

Content-Type: text/xml; charset=utf-8

为什么.NET在未指定的情况下选择utf-8以外的编码,有什么方法可以强迫这个ASMX使用UTF-8编码?

解决方法

调用Web服务处理程序之前运行以下代码会导致HTTP请求被正确解码:

if (HttpContext.Current.Request.ContentType == "text/xml") {
    HttpContext.Current.Request.ContentType = "text/xml; charset=UTF-8";
}

这感觉有点黑客,但我相信它对我的情况会很好.我仍然对一些背景信息非常感兴趣,这些信息根本就是为什么这是一个问题,如果有更好的方法解决这个问题(除了让客户端更清楚地了解编码).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐