如何在Web App中使用HTTP POST方法接收多个复杂对象

时间:2014-06-23 13:02:39

标签: asp.net-web-api http-post

我想调用一个web api方法,这就是我的web api方法的样子:

[HttpPost]
        [Route("PostMyService/updatedBy/{updatedByID}/myobjname")]
        public void PostTerminalService([FromBody]  List<SomeType> lstSomeObj, MyClass myobj, int updatedByID)
{
//Do Something
}

这就是我的客户的样子:

int loggedinuserid=1;
  List<Sometype> liTS = new List<SomeType>();
MyClass myobj=new MyClass();
    var url = "api/XYZ/PostMyService/updatedBy/" + loggedinuserid + "/myobjname/" + myobj;
    HttpResponseMessage response = client1.PostAsJsonAsync(url, liTS).Result;

但我得到的错误/异常是: HTTP错误404.0 - 未找到 最可能的原因: •Web服务器上不存在指定的目录或文件。 •URL包含印刷错误。 •自定义过滤器或模块(如URLScan)会限制对文件的访问。

知道如何解决这个问题吗?我有点碰壁。

提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 你有&#34; api / XYZ /&#34;在您的客户端代码中加了前缀,但我在您的服务器代码上看不到它。我预测你在服务器配置中有它,但如果没有,你会看到问题。

  2. 您只能在WebAPI中使用[FromBody]标记创建一个对象,但不清楚您尝试传递MyClass对象的方式。

  3. 只有简单的对象,整数和字符串可以在uri字符串中传递,因此MyClass对象将无法正确传输。

  4. 我建议删除MyClass对象或创建一个封装List<SomeType> and MyClass`的更大对象,并使用[FromBody]装饰将其传递到请求正文中。

    Here's more information on the topic