我最初使用WebRequest和WebResponse发送Http Post Messages。我总是收到<!>“OK <!>”的回复。我发布的消息是使用xml中的证书签名的XML。

组成如下: 发送到https网站的C#服务。 HTTPS网站在另一个地方,我不能说。 本地HTTPS本地网站,它只接收我在本地发布的消息并将结果写入文件。只是为了模拟其他网站的内容。

本地网站签署的自签名证书将于2048年到期。

此代码在本周工作正常。我总是张贴并且好了。在这两个网站上。但本周测试和真正的项目实施都进入了Kaput。在两个网站上。
在本地网站上,它说无法连接到SSL。 这个问题是由自签名证书造成的,由于某些原因我无法理解它的地狱。感谢这里的问题,我只是验证了证书永远是真实的,现在它不再是烦恼了。

要解决此问题,请写下:

ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();

在您的申请开始时。所以它只运行一次。

剩下的问题是<!> quot;远程服务器返回错误:(503)Server Unavailable。<!> quot;。我在浏览器中输入了URL,它对我来说很好。在代码中,这个网站没有收到任何东西,当它进入网络响应时,它给了我上面的错误

我做了一个只发送<!>的测试应用程序;测试1 2 3 <!>但我一直在收到错误。我也把它发送到哈佛https网站,没有错误。

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;
        }

    }

这是我根据互联网发现的另一个例子:

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;
        }


    }

<强>更新

错误是我用httpwebrequest调用的那个,需要一些我没有提供的httpheaders。在发生唯一的事情之前,我得到了一个<!>“OK”!响应。他们修复了他们的代码,我修复了我的代码,现在它正在工

如果发生在其他人身上,请检查下面的代理设置,并检查对方是否发出异常或者根本不返回任何内容。

有帮助吗?

解决方案

如果您在浏览器中导航到URL时收到503错误,但在使用HttpWebRequest时请求资源时收到错误,我首先要做的就是建议您在发出请求时指定 UserAgent 的值。

您可能还想使用 Fiddler2 或其他工具来更好地了解在请求的生命周期中发生。如果不了解您要向其发布消息的服务的详细信息,很难提供指导。

其他提示

问题似乎是这个网站发生了变化。之前,如果我发送任何垃圾邮件,它将返回通常的确定。他们改变了网站,并且需要一些http标头。昨天我有一整天的http标题,晚上是有效的。在我的情况下,它是期待http标头,而不是得到它们,也许正在爆炸。

我今天测试了它,给出了标题而没有给出http标题,在后一种情况下,它测试了503.

如果我找到更多信息,我会尝试在此处发布。我希望这可以节省一些时间和一些头发给其他人:)。

我有类似的问题。感谢Fiddler提示,我发现它是由我的新开发环境中的代理设置引起的。很烦人。 .NET Web服务采用IE中设置的代理设置。

有关详细信息,请查看: http://support.microsoft.com/kb/307220 http://msdn.microsoft.com/en-us/ library / kd3cf2ex.aspx

我有503错误的类似问题,但它的原因是代理。如果你有代理,只需使用:

request.Proxy = null;

request.Credentials = System.Net.CredentialCache.DefaultCredentials;

如果重置IIS,请确保最近未更改密码。傻但发生了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top