在类库中使用Web API

时间:2018-12-20 09:46:40

标签: c# asp.net-web-api .net-core autocad autocad-plugin

我正在auto-cad中构建插件,并使用带有实体框架的类库和Web API 但是每次我尝试在类库中使用Web API时,响应都会返回“找不到”。  这是我的类库代码

[CommandMethod("Doit")]
      public void Test()
    {
        Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;

        Checker c = new Checker() { WholeArea = 1000, BuildingArea = 200, Status = 1 };

        using (var client = new HttpClient())
        {
            client.BaseAddress =new  Uri("http://localhost:52133/api");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            HttpResponseMessage response = client.PostAsJsonAsync("Checker", c).Result;
            if (response.IsSuccessStatusCode)
            {
                ed.WriteMessage("Hello data");
            }
            else
            {
                ed.WriteMessage((response.StatusCode).ToString());
            }
        }
    }

这是我的控制器发布方法

// POST: api/Checkers
    [ResponseType(typeof(Checker))]
    public IHttpActionResult PostChecker(Checker checker)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.Checkers.Add(checker);
        db.SaveChanges();

        return CreatedAtRoute("DefaultApi", new { id = checker.ID }, checker);
    }

首先:现在我不知道返回该代码的问题是什么? 第二-如果没有使用.net core在cad中构建插件

1 个答案:

答案 0 :(得分:0)

您是否看到404响应代码? 您是否尝试过从邮递员或提琴手调用api方法? 我总是尝试从其中之一调用,以便确定api正确响应。这将告诉您问题是否出在您使用的代码中。

我注意到您正在使用PostAsJsonAsync调用api方法,但是api方法未标记为异步,这可能是问题吗?

api方法也没有用HttpPost属性修饰;我不确定这是否有必要,但我会分别尝试其中的每一个