5

如何将复杂对象(可能有大量数据)发送到 Web API 获取方法?我知道我可以使用“FromUri”选项,但由于数据太大,我无法使用该选项。我想使用“FromBody”选项。但是我可以将数据发布到 Get 方法吗????

请在这里指导我...在此先感谢

4

3 回答 3

17

如何将复杂对象(可能有大量数据)发送到 Web API 获取方法?

你不能。GET 方法没有请求正文。您必须在有限制的查询字符串中发送所有内容。

您应该改用 POST。

于 2013-09-27T11:54:55.247 回答
2

您需要创建一个类似于以下的方法:

[HttpPost]
public HttpResponseMessage MyMethod([FromBody] MyComplexObject body)
{
    try
    {
        // Do stuff with 'body'
        myService.Process(body);
    }
    catch (MyCustomException)
    {
        return new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("FAILED") };
    }

    return new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent("OK") };
}

如果您的 POSTing 数据大于 4MB,那么您需要调整 web.config 以配置 IIS 以接受更多数据,以下示例将 maxRequestLength 和 maxAllowedContentLength 设置为 10MB:

<system.web>
    <httpRuntime maxRequestLength="10240" />
</system.web>

<system.webServer> 
      <security> 
          <requestFiltering> 
             <requestLimits maxAllowedContentLength="10485760" /> 
          </requestFiltering> 
      </security> 
</system.webServer>
于 2013-09-27T12:15:27.200 回答
0

使用 OData 可能适用于不太大的对象

https://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api

或者像下面这样使用 FromUri

public MethodName Get([FromUri]Model model, int page, int pageSize)

于 2017-10-09T06:15:14.373 回答