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

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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....