HttpWebRequest-Server nicht Verfügbar 503 probleme
Ich ursprünglich verwendet WebRequest und von WebResponse zu gesendeten Http-Post-Nachrichten. Immer bekam ich eine Antwort von "OK". Die Botschaft, die ich der post eine XML-Signatur mit einem Zertifikat in der xml.
Die Zusammensetzung ist:
C# Dienst, sendet eine https-website.
Die HTTPS-Website auf einem anderen Platz, das kann ich nicht sagen.
HTTPS Local Website lokal ist mit dem Empfang der Nachrichten, die ich der post vor Ort und schreiben die Ergebnisse in eine Datei. Nur zu simulieren, was die andere website.
Lokalen Website ist signiert mit einem selbst signierten Zertifikat zu verfallen, in 2048.
Dieser code funktionierte gut, bis diese Woche. Ich habe immer gepostet, und bekam ein OK. In beiden websites. Aber diese Woche der test und die Reale Umsetzung des Projekts gehen beide Kaput. Auf Beiden Seiten Sind.
Auf der lokalen website-es war nämlich keine Verbindung zu SSL.
Dieses problem wird verursacht, durch das selbst signierte Zertifikat aus irgendeinem Grund über mein Verständnis seiner Angabe die Hölle. Dank der hier auf die Fragen die ich habe gerade überprüft das Zertifikat, um immer wahr zu sein und jetzt ist es nicht nervt mehr.
Dies zu beheben, schreiben Sie einfach:
ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();
In den start der Anwendung. So, dass es nur einmal ausgeführt wird.
Das Verbleibende problem ist das "Der Remoteserver hat einen Fehler zurückgegeben: (503) Server nicht Verfügbar.". Ich geben Sie die URL in meinem browser und es funktioniert gut für mich. In den code dieser website ist nicht erhalten nichts und wenn er geht, um die web-Antwort, die er gibt mir die obige Fehlermeldung
Habe ich eine test-Anwendung, die sendet nur "Testing 1 2 3" aber ich erhalte die Fehlermeldung. Ich schickte auch Sie zu einem harvard-https-website, und es gab keine Fehler.
private void btnSend_Click(object sender, EventArgs e)
{
try
{
WebRequest req = WebRequest.Create(cboUrl.Text);
req.PreAuthenticate = true;
req.UseDefaultCredentials = true;
req.Method = "POST";
req.ContentType = "text/xml";
String msg = txtMsg.Text;
using (Stream s = req.GetRequestStream())
{
try
{
s.Write(
System.Text.ASCIIEncoding.ASCII.GetBytes(msg), 0, msg.Length);
}
finally
{
s.Close();
}
}
WebResponse resp = req.GetResponse();
StreamReader str = new StreamReader(resp.GetResponseStream());
txtRes.Text = str.ReadToEnd();
}
catch (WebException ex)
{
txtRes.Text = ex.Message;
}
catch (Exception ex)
{
txtRes.Text = ex.Message;
}
}
Dies ist ein weiteres Beispiel, das ich gebaut habe von dem, was ich im internet gefunden:
private void button1_Click(object sender, EventArgs e)
{
try
{
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(cboUrl.Text);
myReq.Headers.Clear();
myReq.Method = "POST";
myReq.KeepAlive = false;
myReq.ProtocolVersion = HttpVersion.Version11;
myReq.ContentType = "text/xml";
myReq.Proxy = null;
myReq.Credentials = null;
myReq.ContentLength = txtMsg.Text.Length;
using (StreamWriter sendingData = new StreamWriter(myReq.GetRequestStream()))
{
sendingData.Write(txtMsg.Text);
sendingData.Flush();
sendingData.Close();
}
HttpWebResponse myResponse = (HttpWebResponse) myReq.GetResponse();
StreamReader responseStream = new StreamReader(myResponse.GetResponseStream());
txtRes.Text = responseStream.ReadToEnd();
responseStream.Close();
myResponse.Close();
}
catch(WebException ex )
{
txtRes.Text = ex.Message;
}
catch (Exception ex)
{
txtRes.Text = ex.Message;
}
}
Update
Fehler war, dass der, den ich rief mit httpwebrequest, brauchte einige httpheaders, dass ich nicht bieten. Bevor die einzige Sache, die passiert war, bekam ich eine Antwort "OK". Sie fixiert Ihren code und ich fest meine, und jetzt seine Arbeit.
Wenn es passiert, jemand anderes zu überprüfen, wie unten gesagt, die proxy-Einstellungen und prüfen Sie auch, ob die andere Seite gibt eine Ausnahme oder wieder gar nichts.
InformationsquelleAutor ThorDivDev | 2008-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht erhalten einen 503-Fehler beim navigieren auf die URL in Ihrem browser, aber tun erhalten Sie beim anfordern der Ressource bei der Verwendung von HttpWebRequest, das erste, was ich empfehlen würde, ist, dass Sie angeben einen Wert für die UserAgent, wenn die Anforderung gesendet wird.
Können Sie auch verwenden möchten Fiddler2 oder einem anderen Werkzeug, um eine bessere Vorstellung von dem, was passiert während der Lebensdauer einer Anfrage. Es ist schwer, Hinweise zu geben, ohne zu wissen, mehr über die details und den service, den Sie senden Nachrichten an.
InformationsquelleAutor Oppositional
Das problem scheint zu sein, dass diese website verändert. Vor, wenn ich eine Nachricht gesendet mit junk-würde es wieder die üblichen "OK". Sie verändert die website und es sind einige http-Header erforderlich. Gestern hatte ich die http-Header für den ganzen Tag und in der Nacht war, wenn es funktionierte. In meinem Fall war es, dass es erwartet wird, dass die http Header und bekommen Sie nicht und vielleicht ist etwas explodiert.
Getestet habe ich es heute geben die überschriften und nicht den http-Header und im letzteren Fall hat der 503.
Wenn ich weitere info, ich werde versuchen es hier zu posten. Ich hoffe, das spart einige Zeit und einige Haare auf andere Menschen :).
InformationsquelleAutor ThorDivDev
Ich hatte ein ähnliches problem. Dank der Fiddler Tipp, fand ich heraus, dass es verursacht wurde durch die proxy-Einstellungen in meinem neuen Entwicklungsumgebung. Sehr ärgerlich ist. Die .NET webservices übernehmen die proxy-Einstellungen im IE.
Für mehr Informationen check out: http://support.microsoft.com/kb/307220 und http://msdn.microsoft.com/en-us/library/kd3cf2ex.aspx .
InformationsquelleAutor Pascal Lindelauf
Ich hatte ähnliches problem mit 503 Fehler, aber der Grund dafür war-proxy. Wenn Sie einen proxy verwenden, verwenden Sie einfach diese:
request.Proxy = null;
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
InformationsquelleAutor gradosevic
Wenn Sie IIS zurücksetzen, stellen Sie sicher, dass Sie noch nicht Ihr Passwort geändert vor kurzem. Dumm, aber es passiert.
InformationsquelleAutor Hennish