Accepter codé en UTF-8 dans les chaînes de ASP.NET WebService

J'ai un ASP.NET WebService qui ressemble à quelque chose comme ceci:

[WebMethod]
public static void DoSomethingWithStrings(string stringA, string stringB)
{
    //and so on
}

Une troisième partie de l'application doit appeler ce webservice. Cependant, cette application codant pour les chaînes en tant que UTF-8 et de tous les accents sont remplacés par des '??'. Je peux afficher les appels et les caractères spéciaux sont mis en forme bien:

<?xml version="1.0" encoding="utf-8" ?>
<!-- ... -->
<SoapCall>
    <DoSomethingWithStrings>
        <stringA>Ä - Ö - Ü</stringA>
        <stringB>This is a test</stringB>
    </DoSomethingWithStrings>
</SoapCall>

Ce produit la sortie suivante, quand j'ai tout simplement l'impression que les cordes à l'intérieur du webservice méthode:

?? - ?? - ??

Ceci est un test

Comment puis-je configurer le WebService pour accepter codé en UTF-8 cordes?

mise à Jour

Fiddler me dit aussi que le contenu du jeu de caractères du type de la requête http est UTF-8.

mise à Jour 2

J'ai essayé d'ajouter le code suivant à global.asax à des fins de débogage:

public void Application_BeginRequest(object sender, EventArgs e)
{
    using (var reader = new System.IO.StreamReader(Request.InputStream))
    {
        string str = reader.ReadToEnd();
    }
}

Ce lit le véritable SAVON d'appel. Le StreamReaders l'encodage est défini à l'UTF-8. Le SAVON d'appel semble correct:

<?xml version="1.0" encoding="UTF-8" ?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <DoSomethingWithStrings xmlns="http://www.tempuri.org/">
            <stringA>Ä - Ö - Ü</stringA>
            <stringB>This is a test!</stringB>
        </DoSomethingWithStrings>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Dans le web.config fichier de la mondialisation paramètres sont correctement définis:

<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" culture="de-DE" uiCulture="de-DE" />

De sorte qu'il ressemble à quelque chose que désérialise le message SOAP ne pas utiliser l'UTF-8, mais le codage ASCII.

  • Juste un point technique, mais crypté n'est pas le bon adjectif. En tant que UTF-8 est tout simplement un jeu de caractères codés serait plus précis.
  • Bien sûr, vous avez raison, désolé pour ce mix up 🙂
InformationsquelleAutor Carsten | 2012-12-04