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

标签 asp.net web-services encoding character-encoding asmx

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

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 被修改为 ??LM?? B??CK——典型的编码困惑。

在我的测试中,我发现如果我简单地调整内容类型 header ,一切都很好:

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";
}

这感觉有点老套,但我相信它适合我的情况。我仍然对一些背景信息非常感兴趣,了解为什么这是一个问题,以及是否有更好的方法来解决这个问题(除了让客户端更明确地了解编码之外)。

关于asp.net - ASMX Web 服务对传入请求使用错误的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10221051/

相关文章:

c# - ASP.net 文本框居中文本

javascript - ASP.NET + Bootstrap Modal远程页面加载

ASP.NET 与 VS 2010 : Web Site or Web Application?

ios - 使用服务器用户名和密码在 swift 中发布方法

java - 无法解析与前缀 'diffgr' 关联的命名空间。在 Castor 中

python - 将编码的json转换为utf-8

php - $_GET 变量编码困惑

c# - c#如何在asp.net网页中显示C程序错误

python - Django - 编写希伯来语字符串

java - 轴 2 WS-互操作性基本配置文件 1.1