Wie kann der Fehler 'Client gefunden Response Content Type' von 'text / html' .. interpretiert werden
Ich bin mit C# und anschließen an einen WebService über eine automatisch generierte C# - proxy-Objekt. Die Methode die ich aufrufen kann lange laufen, und manchmal auch mal aus. Ich bekomme unterschiedliche Fehler zurück, manchmal bekomme ich ein System.Net.WebException
oder eine System.Web.Services.Protocols.SoapException
. Diese Ausnahmen haben Eigenschaften, die kann ich befragen, um zu finden, die bestimmte Art von Fehler, von denen ich anzeigen kann, einen Menschen-freundlichen version von die Benutzer.
Aber manchmal bekomme ich nur ein InvalidOperationException
, und es hat die folgende Meldung. Gibt es eine Möglichkeit, dass ich interpretieren kann, was das ist, ohne zu Graben durch den string für Dinge, die ich erkennen, dass fühlt sich sehr schmutzig und ist nicht Internationalisierung Agnostiker, die Fehlermeldung könnte wieder kommen in einer anderen Sprache.
Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'.
The request failed with the error message:
--
<html>
<head>
<title>Request timed out.</title>
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
pre {font-family:"Lucida Console";font-size: .9em}
.marker {font-weight: bold; color: black;text-decoration: none;}
.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
</style>
</head>
<body bgcolor="white">
<span><H1>Server Error in '/PerformanceManager' Application.<hr width=100% size=1 color=silver></H1>
<h2> <i>Request timed out.</i> </h2></span>
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
<b> Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
<br><br>
<b> Exception Details: </b>System.Web.HttpException: Request timed out.<br><br>
<b>Source Error:</b> <br><br>
<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code>
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.</code>
</td>
</tr>
</table>
<br>
<b>Stack Trace:</b> <br><br>
<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>
[HttpException (0x80004005): Request timed out.]
</pre></code>
</td>
</tr>
</table>
<br>
<hr width=100% size=1 color=silver>
<b>Version Information:</b> Microsoft .NET Framework Version:2.0.50727.312; ASP.NET Version:2.0.50727.833
</font>
</body>
</html>
<!--
[HttpException]: Request timed out.
-->
--.
Bearbeiten:
Ich habe einen try-catch um die Methode auf dem web-server. Ich habe es ausgetestet, und die web-server-Methode gibt (nach einer minute oder so), ohne jede Ausnahme. Ich habe auch eine unbehandelte exception-handler in der web-service und einen Haltepunkt gab es keinen Treffer. Sobald der web-service liefert, bekomme ich diese Fehler bei dem client, statt das Ergebnis habe ich erwartet.
InformationsquelleAutor der Frage Scott Langham | 2008-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist passiert, weil es ist eine unbehandelte Ausnahme in Ihrem Web-service, und die .NET-runtime ist spuckt seine HTML-yellow screen of death " - server error/exception dump-Seite, anstelle von XML.
Da die Verbraucher von Ihrem Web-service war zu erwarten, ein text/xml-header und stattdessen bekam "text/html", wirft er den Fehler.
Sollten Sie Adresse die Ursache des timeouts (vielleicht eine langwierige SQL-Abfrage?).
Auch, Kasse in diesem blog-post auf Jeff Atwood ' s blog erklärt, dass die Implementierung einer globalen unbehandelte exception-handler und verwenden von SOAP-exceptions.
InformationsquelleAutor der Antwort Seibar
Das bedeutet, dass die Verbraucher erwarten von XML-Daten aus der webservice-aber der webservice, als Ihre Fehler zeigt, gibt HTML, da es andernfalls aufgrund eines timeout.
So müssen Sie sprechen, um die remote-webservice-provider zu lassen Sie Sie wissen, dass es fehlschlägt und Korrekturmaßnahmen. Es sei denn, Sie sind der Anbieter des webservice-in diesem Fall sollten Sie fangen Sie die Ausnahmen und die XML zurückgeben, erzählt die Verbraucher, welche Fehler aufgetreten ist ("remote provider" wahrscheinlich sollte das auch tun).
InformationsquelleAutor der Antwort Vinko Vrsalovic
Wenn Sie mit .NET version 4.0. die validateRequestion eingeschaltet ist standardmäßig für alle Seiten. in früheren Versionen 1.1 und 2.0 war es nur für aspx-Seite. Sie können die Standard-Validierung aus. In diesem Fall müssen Sie die due diligence und stellen Sie sicher, dass die Daten sauber sind. Verwenden Sie HtmlEncode. So schalten Sie die Validierung aus
Im web.config
fügen Sie die folgenden Zeilen für das system.web
und
Lesen Sie mehr über dieses http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes
auch http://msdn.microsoft.com/en-us/library/ff649310.aspx
Hoffe, das hilft.
InformationsquelleAutor der Antwort Mhoque
Dem webserver ist wieder eine http 500-Fehlercode. Diese Fehler in der Regel passiert, wenn eine Ausnahme geworfen auf dem webserver und es gibt keine Logik, es zu fangen, so dass es spuckt eine http 500-Fehlermeldung. Sie können in der Regel beheben Sie das problem, indem try-catch-Blöcke im code.
InformationsquelleAutor der Antwort bastos.sergio
Hatte ich dieses geschehen als ein Ergebnis der Konfiguration-Fehler in web.config. Prüfen der Verbindung string, etc. könnte die Antwort sein für die Zeit.
InformationsquelleAutor der Antwort oekstrem
Löschen web.config-Datei einfügen und wieder. http://forums.asp.net/post/916808.aspx
InformationsquelleAutor der Antwort aolmez
Ist Ihr webservice korrekt konfiguriert im IIS? Der pool benutzt, die version von ASP.NET (2.0) eingestellt ist? Können Sie durchsuchen die .asmx?
Reden hier über Ausnahmen, zu versuchen, ein try-catch-block in der Zeile, die Zugriff auf Ihre webservice. Setzen und catch(System.Web.Services.Protocolos.SoapException).
Können, können Sie auch legen einen Timeout für Ihre webservice-Objekt.
InformationsquelleAutor der Antwort Erup
Hatte ich diesen Fehler nach dem ändern der web-service return-Typ und SoapDocumentMethod.
Zunächst war es:
Habe ich beschlossen, es Feuer-und-vergessen-Typ wie diese:
In solchen Fällen, die Aktualisierung der web-Referenz geholfen.
Aktualisierung einer web-service-Referenz:
InformationsquelleAutor der Antwort student