gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:43:39 24 4
gpt4 key购买 nike

我的 .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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com