我想调用一个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)会限制对文件的访问。
知道如何解决这个问题吗?我有点碰壁。
提前致谢。
答案 0 :(得分:1)
你有&#34; api / XYZ /&#34;在您的客户端代码中加了前缀,但我在您的服务器代码上看不到它。我预测你在服务器配置中有它,但如果没有,你会看到问题。
您只能在WebAPI中使用[FromBody]标记创建一个对象,但不清楚您尝试传递MyClass
对象的方式。
只有简单的对象,整数和字符串可以在uri字符串中传递,因此MyClass
对象将无法正确传输。
我建议删除MyClass
对象或创建一个封装List<SomeType> and
MyClass`的更大对象,并使用[FromBody]装饰将其传递到请求正文中。