hi leute,
ich habe folgendes problem:
ich habe drei kleine webservices geschrieben (A, B und C). dabei benutzt webservice A die beiden services B und C. wenn ich B und C separat starte, funktioniert alles tadellos. sie erfüllen ihre aufgabe.
wenn ich aber den webservice A starte, funktioniert plötzlich nichts mehr. wenn ich über den test-server, den visual studio automatisch selbst startet, über die website die einzige webmethode ansteuere, die er hat, dann kriege ich folgende fehlermeldung:
System.Net.WebException: The request was aborted: The connection was closed unexpectedly.
at System.Net.ConnectStream.InternalWrite(Boolean async, Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
at System.Net.ConnectStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Xml.XmlUtf8RawTextWriter.FlushBuffer()
at System.Xml.XmlUtf8RawTextWriter.Flush()
at System.Xml.XmlWellFormedWriter.Flush()
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Serialize(SoapClientMessage message)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at NcbiGenomeFetcher.NcbiGenomeFetcher.FetchGenome(String refseqID)
at NcbiRelativeFinder.FindClosestRelative(String refseqID)
ich habe den fehler bereits eingekreist. er passiert wenn im code von webservice A die webmethode von webservice B aufgerufen wird. also wenn der webservice das erste mal auf einen anderen webservice zugreift.
woran könnte es liegen? bitte helft mir 😁
edit: PS: webservice A ist der "NcbiRelativeFinder" und webservice B der "NcbiGenomeFetcher"! man sieht es im stack trace auch, dass A beim aufruf einer webmethode von B einen fehler auslöst.
Laut Fehlermeldung wurde die connection vorzeitig geschlossen.
Kann es sein, dass in Service A irgendwo ein Fehler stattfindet den du abfängst, er darauf die connection killt und er dadurch keinen zugriff mehr hat?.
Kannste mal den Codeschnippsel aus Service A schicken? Ich denke, dass hilft uns weiter.
Service A:
[WebMethod]
public string FindClosestRelative (string refseqID) {
NcbiGenomeFetcher.NcbiGenomeFetcher fetcher = new NcbiGenomeFetcher.NcbiGenomeFetcher();
string genome = fetcher.FetchGenome(refseqID);
NcbiBlaster.NcbiBlaster blaster = new NcbiBlaster.NcbiBlaster();
string blastResult = blaster.Blast(genome);
return ParseClosestRelative(refseqID, blastResult);
}
Dabei wird in der zweiten Zeile folgende Methode von Service B aufgerufen:
[WebMethod]
public string FetchGenome (string refseqID) {
string genome = null;
try
{
string page = DownloadPage(url + refseqID);
genome = ExtractGenome(page).Replace("\n", "");
}
catch (Exception ex)
{
genome = "<ERROR> : " + ex.Message;
}
return genome;
}
Service B und C befinden sich in einer Solution mit Service A und wurden über "Add Web Reference->Webservice in this solution" hinzugefügt.