Asp.net mvc 4 以复杂对象为参数的webapi获取方法

Asp.net mvc 4 以复杂对象为参数的webapi获取方法,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,如何将复杂对象(可能包含大量数据)发送到Web API Get方法? 我知道我可以使用“FromUri”选项,但由于数据太大,我不能使用该选项。我想使用“FromBody”选项。但是我可以将数据发布到Get方法吗 请引导我到这里…提前谢谢 如何将复杂对象(可能包含大量数据)发送到Web API Get方法 你不能。GET方法没有请求主体。您必须发送查询字符串中有限制的所有内容 您应该改用POST。您需要创建一个类似于以下内容的方法: [HttpPost] public HttpResponseM

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

请引导我到这里…提前谢谢

如何将复杂对象(可能包含大量数据)发送到Web API Get方法

你不能。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") };
}
如果发布数据大于4MB,则需要调整web.config以将IIS配置为接受更多,以下示例将maxRequestLength和maxAllowedContentLength设置为10MB:

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


使用OData可能对不太大的对象很好

或者像下面这样使用FromUri


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

。因为在GET中发布大量数据可能不是一个好主意??您不能使用HTTP GET发布数据,您必须使用通常少于2000个字符的URI。如果您需要向服务端点发布大量数据,您应该使用HTTPPOST并将数据放在正文中。我不会像那样比较WCF或WebAPI。每一个都有其适当的应用程序。因此,在这种情况下,与“WebAPI”相比,“WCF”是更好的选择。因为在GET中发布大量数据可能不是一个好主意???@KokiralaSudheer,您不能在GET中发布数据:-)您自相矛盾。WCF根本帮不了你。我建议您阅读HTTP协议规范,熟悉GET和POST动词,最重要的是了解它们的区别。使用GET动词时,请求没有任何正文。只能使用查询字符串参数向服务器发送值。如果你需要向服务器发送大量数据,你应该使用POST。@KokiralaSudheer这样想:
GET:提供一个URL,将获得一些数据。
POST:提供一个URL和一些数据,将发送一些数据并获得一些数据作为回报。
<system.webServer> 
      <security> 
          <requestFiltering> 
             <requestLimits maxAllowedContentLength="10485760" /> 
          </requestFiltering> 
      </security> 
</system.webServer>