【问题标题】:How to post to asp.net core web api controller and get argument with value如何发布到 asp.net core web api 控制器并获取带值的参数
【发布时间】:2018-02-14 14:16:57
【问题描述】:

我正在努力让我的自托管 asp.net Web api 服务器接到电话以在控制器上发帖。

$.ajax({
    url: mySelfHostedAspWebApi, //i.e. http://1.2.3.4:1234/
    type: "POST",
    data: cmd,
    contentType: 'application/json',
    success: (function(scanCmd) {

   }), //success: (function (scanCmd){
});// $.ajax({

C# 中的 asp.net 核心控制器非常简单。

  ...
  [Route( "" )]
  [HttpPost]
  public HttpResponseMessage Post(Command cmd)
  {
     ASSERT(null,cmd); // <=== problem here !!!
     if(cmd=="go") Go(";-)");
     ...

在我的一个旧项目中,我遇到了类似的问题...修复方法是在系统上打开一些文件,控制帖子是否对我自己hostedapp 可用,并在以下行写入 POST控制对我的应用程序的访问。 (我只是不记得它是什么文件......)

  • 如果这听起来很熟悉,请添加提示。 谢谢

【问题讨论】:

  • 只是检查一下,您为什么没有像这样使用FromBody 属性声明您的cmd 参数:public HttpResponseMessage Post([FromBody] Command cmd)
  • 我进一步调试了一下,发现问题是由ajax调用中的contentType:'application/json'引起的..

标签: c# rest asp.net-core-webapi


【解决方案1】:

问题在于在 ajax 调用中使用了 contentType: 'application/json'。 - 我删除了它,并得到了数据。

【讨论】:

    【解决方案2】:

    我认为您缺少 FromBody 参数的 cmd 参数声明,如下所示:

    [Route( "" )]
    [HttpPost]
    public HttpResponseMessage Post([FromBody] Command cmd) // <<- tweak here
    {
        ASSERT(null,cmd); // <=== no problem here :-)
        if(cmd=="go") Go(";-)");
        ...
    

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 1970-01-01
      • 2020-04-16
      • 2022-08-18
      • 1970-01-01
      • 2020-06-21
      • 2014-01-27
      • 2014-12-17
      • 2019-03-28
      相关资源
      最近更新 更多