代码之家  ›  专栏  ›  技术社区  ›  Ced

IIS 8.5 400错误请求

  •  0
  • Ced  · 技术社区  · 6 年前

    IIS8.5返回特定post请求的400状态代码。

    错误请求由托管在同一域上的具有不同端口的web应用程序执行。API被配置为处理cors,并成功完成故障请求的预处理。

    我注意到一件奇怪的事: 该Api的部署包含了Swagger UI。所以我试着用大摇大摆的用户界面重现这个错误。但在这种情况下,请求是成功的。

    看起来这个请求根本没有被Api处理(在本例中,我应该在我们的日志文件中看到一些东西),所以我很确定这个错误发生在I is本身的某个地方。

    我已经调查了httperr.log文件。它包含失败请求时的流动行:

    2018-12-05 15:38:36 192.168.100.132 62121 192.168.100.173 1142 HTTP/1.1 POST/api/some/request/path 400 13 BadRequest myServicePool

    我想知道“BadRequest”之前的“13”是否有特殊含义?

    如果你需要更多的细节,请告诉我。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Asela Liyanage    6 年前

    如果我们能在代码中提供您发送请求的示例代码,那就更好了。

    然而,根据给定的事实,我认为问题出在请求主体的内容上。即使是虚张声势的请求和您发送的请求看起来完全一样,在某些方面也应该有所不同。

    您使用的是JSON转换器吗?如果您使用的是JSON转换器,并且将.NET模型序列化为JSON字符串并附加到请求中,请确保使用 骆驼壳 .

    例子

    我会用 新软JSON 图书馆。

    .NET模型已序列化,但未指定格式

    var businessLeadJson = JsonConvert.SerializeObject(ObjectA);
    

    转换结果- {"Company":"sample","ContactName":"contact 1"}

    通过指定格式序列化的.NET模型

    var businessLeadJson = JsonConvert.SerializeObject(businessLead, new 
          JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() });
    

    转换结果- {"company":"sample","contactName":"contact 1"}

    请注意JSON字符串中属性名的大小写。第一个字母是第一个结果中的大写字母。

    通过指定格式 ,因为restapi期望JSON字符串采用正确的格式。

    序列化请求正文的对象时,请指定大小写格式。

        2
  •  0
  •   Ced    5 年前

    我只是偶然地重犯了这个错误。

    问题是,如果用户还没有登录,应用程序会发送一个空的授权头。