【问题标题】:I got error 500 when I try to post a json to webservice当我尝试将 json 发布到 web 服务时出现错误 500
【发布时间】:2016-03-23 05:10:31
【问题描述】:

我正在开发一个 c# windows 窗体的应用程序,当我尝试发送一个大的 json 时,我得到了一个异常错误 500。

这是 POST 的方法

public void POST(string url, string jsonContent)
{
    HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
    request.Method = "POST";

    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
    Byte[] byteArray = encoding.GetBytes(jsonContent);

    request.ContentLength = byteArray.Length;
    request.ContentType = "application/json";


    using(Stream dataStream = request.GetRequestStream())
    {
        dataStream.Write(byteArray, 0, byteArray.Length);
    }
    long length = 0;
    try
    {
        using(HttpWebResponse response = (HttpWebResponse) request.GetResponse())
        {
            length = response.ContentLength;
        }
    }
    catch (WebException ex)
    {

        // Log exception and throw as for GET example above
    }
}

我可以在 JSON 中发送其他对象,但特别是这个具有大量数据的对象,我得到了这个异常。 但是当我尝试从 web 服务获取这个相同的对象时,它工作得很好。

问题是,我可以得到这么大的数据,但我不能发送同样的数据。

按照我的控制器的代码。

[Route("reconhecimento")]
[HttpPost]
    public bool PostPessoasReconhecimento([FromBody]PessoaReconhecimentoModel[] newpessoaReconhecimento)
    {

    PessoaReconhecimentoModel pessoaReconhecimento = new PessoaReconhecimentoModel();
        return pessoaReconhecimento.postPessoaReconhecimento(newpessoaReconhecimento);
    }

【问题讨论】:

  • 你点击过View detail...吗? Web 服务可能对 POST 数据的大小有限制。例如 PHP 的默认限制为 8Mb。
  • 我做到了,我使用 c#,我该如何解决?你知道吗?
  • @Joab 如果您了解 Web 异常的基础对象,您可以获得更多详细信息(您获得的 Web 异常实例)。特别是正如肯尼建议的那样,您可以查看问题是否是收入消息的限制。让我知道是否是这种情况以及您是否使用 selfhost 或 iis 作为服务器(我解释了如何修复错误)
  • 我使用iis作为服务器,我认为问题是因为我发送的数据很大

标签: c# json winforms web-services


【解决方案1】:

Joab 我想这个问题可能与您的请求维度有关。

尝试检查您的问题是否可以归类为该问题的重复: Maximum default POST request size of IIS 7 - how to increase 64kB/65kB limit?

【讨论】:

  • 但是,我怎么可能从 Web 服务获得相同数量的数据,然后又无法将相同的数据发回? , 所以这个链接是关于错误 400,但我的是 500
  • Joab 数据收发是等距的,收入数据的限制小于默认的发送限制。您对预期错误应该是 400 而不是 500 的事实是正确的。通常 500 意味着存在应用错误,无论如何我建议尝试使用新配置并查看是否解决错误 Ps:如果它不能解决问题可能是 IIS 上的应用错误,你能提供服务器代码吗?
  • 我可以,但是你想要哪一部分?网络配置,控制器等...?
  • 处理您发回的 json 的控制器
  • 好的,例如,如果我尝试使用提琴手发送数据,我会成功,但如果我尝试使用我的应用程序,则会出现异常
猜你喜欢
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多