我有一个Angular 4应用,需要调用在Visual Studio(asp.net)中创建的WebApi。 "得到"方法是好的,我调用并接收预期的响应,但是当我尝试调用PUT或POST方法时,我总是收到一个BAD REQUEST(400)错误。
我的角色服务:
public AvisoLido(aviso:Aviso) {
let headers:Headers = new Headers({'Content-Type': 'application/json'});
let options:RequestOptions = new RequestOptions({method:RequestMethod.Post, headers:headers})
let obj = JSON.stringify(aviso.IdAviso);
console.log(obj);
let url = "http://localhost:11730/api/Home/"
return this.http.post(
url,
obj,
options
)
.map((resposta:Response) => console.log(resposta.json()));
}
控制器代码:
[EnableCors(origins: "http://localhost", headers: "*", methods: "*")]
public class HomeController : ApiController
{
[System.Web.Http.HttpGet]
public List<Aviso> GetAvisos(int idUsuario, string situacao)
{
AvisoBO bo = new AvisoBO();
return bo.ListAvisoPorUsuario(idUsuario);
}
[System.Web.Mvc.HttpPost]
public Aviso PostAviso([FromBody] Aviso obj)
{
return new Aviso();
}
}
WebApiConfig:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {action="*", id = RouteParameter.Optional }
);
config.EnableCors();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Formatters.Remove(config.Formatters.XmlFormatter);
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);//);
我尝试更改角色服务,传递内容类型&#34; application / x-www-form-urlencoded&#34;而不是Json格式,并且控制器方法触发,但在这种情况下参数始终为null。
任何人都可以帮忙解决这个问题?
谢谢你!
答案 0 :(得分:0)
[System.Web.Mvc.HttpPost]
应该是:
[System.Web.Http.HttpPost]
下面的迷你通用示例
[System.Web.Http.HttpPost]
public MyReturnObject PostAndReturnSomething([FromBody]MyInputObject args)
{
return null;
}