加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:51:11 所属栏目:asp.Net 来源:网络整理
导读:我的.NET ASMX Web服务正在接受来自我无法直接控制的客户端的请求.它正在发送一个如下所示的请求: POST /Service.asmx HTTP/1.1Connection: Keep-AlivePragma: no-cacheContent-Length: 1382Content-Type: text/xmlAccept: text/xmlHost: localhostUser-Age
我的.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";
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读