Web-Service-Antwort gibt einen 500 Internal Server Error
Ich geschrieben habe meine eigene web-Dienst, der funktioniert gut für sich alleine stehen. Ich bin dem Aufruf dieser web service von einer anderen Seite, und in dieser Zeit gibt es einen 500 Internal Server error. Ich bin durch diesen Prozess gehen, für das 1. mal und weiß nicht, was das bedeutet oder warum dies geschieht. Eine vorläufige recherche bei Google zeigt ein breites Spektrum von Antworten, obwohl ich couldnt finden irgendetwas bestimmten.
Hier mein Aufruf-code -
List<string> inputList = new List<string>();
inputList.Add("F");
inputList.Add("B");
List<string> resultList = new List<string>();
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost/Helpers/MyService.asmx");
httpWebRequest.Headers.Add("SOAPAction", "\"http://tempuri.org/GetOutput\"");
httpWebRequest.ContentType = "text/json";
httpWebRequest.Method = "POST";
JavaScriptSerializer serializer = new JavaScriptSerializer();
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = serializer.Serialize(inputList);
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); *****ERROR HERE
string responseText = String.Empty;
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
responseText = streamReader.ReadToEnd();
}
resultList = serializer.Deserialize<List<string>>(responseText);
Hier ist meine Web-Service-Code -
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class MyService: System.Web.Services.WebService
{
public string GetOutput(string jsonStr)
{
try
{
/*code to format jsonStr and send it along to another web service*/
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
string responseText = String.Empty;
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
responseText = streamReader.ReadToEnd();
}
//this obj has a head & body
ResponseObj response_obj = new ResponseObj();
response_obj = serializer.Deserialize<ResponseObj>(responseText);
List<string> Values = new List<string>();
if (response_obj.head.result)
return serializer.Serialize(response_obj.body);
return "";
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
- Haben Sie versucht, die Einsichtnahme in die request/response mit Spielmann?
- Nein, ich werde es herunterladen und versuchen Sie es
- Hosten Sie diese im IIS oder in einem windows service exe?
- Ich bin hosting dieses in IIS
- Ich habe fiddler installiert und kann das sehen, fordern Sie in der "Text" - Registerkarte. Aber ich sehe nicht, eine Antwort gibt es als den 500-Fehler tritt auf. Kann fiddler ' mir helfen, diese debug-Ausgabe weiter?
- 500 Internal Server Error bedeutet im Grunde, dass der code stürzt bei einem gewissen Punkt. Legen Sie eine print-Anweisung in den catch-block und sehen, was die Ausnahme ist. Ich vermute, dass es einer ist, aber nun würden Sie nicht wissen, weil Sie nicht drucken.
- Meinst du drucken die Ausnahme.Nachricht?
- Nur tun
Console.WriteLine(ex.ToString());
und lassen Sie uns wissen, was es gibt. - haben Sie einen Blick auf die windows-Ereignis-log, normalerweise gehe ich dort überprüfen, wenn Sie sich nicht sicher, was passiert ist
- Heres, was es gibt - "System.Net.WebException: Der Remoteserver hat einen Fehler zurückgegeben: (500) Internal Server Error.\r\ \ n bei System.Net.HttpWebRequest.GetOutput ()\\r \ \ n bei der Anwendung.Helferinnen und Helfer.Test.GetSymbolInfo() in C:\\Users\\.....\\Helpers\\Test.asmx.cs:line 45"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht der beste Weg, um zu Debuggen, ist das Anhängen von visual studio auf den IIS (Menü debug/attach to Process...) so können Sie sehen, Schritt für Schritt, was passiert im inneren des web-service-code.
Ich habe gelesen, dass können Sie sehen, details der Fehlermeldung bei localhost/statistics/log, die mir zeigte, dass es noch ein Problem mit meinem Web.config-Datei. Ich kommentierte der genannten Linien und der Fehler ging Weg, macht Weg für die nächste!