2010-12-10 29 views
0

J'ai plusieurs projets que j'ai juste mis à jour de Visual Studio 2003 et ASP.NET v1 vers Visual Studio 2008 et ASP.NET v2. Je définis explicitement un type de "text/xml", et cela était bien, les navigateurs le rendraient comme xml et IE mettrait même les petits signes +/- à côté de chaque balise. Après la mise à niveau, IE restitue uniquement le contenu de l'élément et ignore toutes les balises comme si le contenu était html.Après la mise à niveau, les réponses sont text/html au lieu de text/xml

Response.ContentType = "text/xml"; 
    String resp = "<soap:Envelope>...blah, blah, lots of xml...</soap:Envelope>\n"; 
    Response.Write(resp); 

J'ai fait les mises à niveau parce que quelqu'un (littéralement) arrosées notre serveur et il a dû être reconstruit, donc dans le processus, nous sommes passés de IIS 5.1 à IIS 6.0.

Quelqu'un sait-il comment résoudre ce problème? TIA.

Répondre

1

Vous devriez faire ce qui suit avant d'écrire le contenu:

Response.Buffer = true; 
Response.ClearContent(); 
Response.ClearHeaders(); 
Response.ContentType = "text/xml"; 

Ensuite, une fois que vous avez écrit vos données XML dans la réponse, il suffit d'appeler Response.End(); faire que rien d'autre est en cours ajouté/modifié.


EDIT1: Essayons les suivantes:

Ajouter la ligne <?xml version='1.0' encoding='UTF-8'?> avant de commencer la chaîne "< soap: Envelope > ..."

Si cela ne comprend toujours pas cela fonctionne, puis mon dernier coup est de changer le type de contenu à application/soap+xml

+0

J'ai essayé, mais je reçois toujours "Type de contenu de réponse trouvée par le client de 'text/html; charset = utf-8 ', mais attendu' texte/xml '. La requête a échoué avec l'erreur " –

+0

n'a pas ajouté Fonctionne? – Skorpioh

+0

N'a pas fonctionné, mais il m'a eu le long de la façon de trouver ce qui n'allait pas, merci! –