Serviço da Web ASMX usando codificação incorreta na solicitação de entrada
Meu webservice .NET está aceitando solicitações de um cliente sobre o qual não tenho controle direto. Está enviando um pedido assim:
<code>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> </code>
No meu WebMethod, a string ÄLMÅ BÄCK é mungada para ?? LM ?? B ?? CK - confusão típica de codificação.
Nos meus testes, descobri que, se simplesmente ajusto o cabeçalho do tipo de conteúdo, tudo está bem:
<code>Content-Type: text/xml; charset=utf-8 </code>
Por que o .NET está escolhendo uma codificação diferente de utf-8 quando não é especificado, e existe alguma maneira de coagir esse ASMX a usar a codificação UTF-8?