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

Schreibe einen Kommentar