如何将复杂对象(可能有大量数据)发送到 Web API 获取方法?我知道我可以使用“FromUri”选项,但由于数据太大,我无法使用该选项。我想使用“FromBody”选项。但是我可以将数据发布到 Get 方法吗????
请在这里指导我...在此先感谢
如何将复杂对象(可能有大量数据)发送到 Web API 获取方法?我知道我可以使用“FromUri”选项,但由于数据太大,我无法使用该选项。我想使用“FromBody”选项。但是我可以将数据发布到 Get 方法吗????
请在这里指导我...在此先感谢
如何将复杂对象(可能有大量数据)发送到 Web API 获取方法?
你不能。GET 方法没有请求正文。您必须在有限制的查询字符串中发送所有内容。
您应该改用 POST。
您需要创建一个类似于以下的方法:
[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>
使用 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)