【问题标题】:Consuming Web API in Class library在类库中使用 Web API
【发布时间】:2018-12-20 09:46:39
【问题描述】:

我正在 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 在 auto-cad 中构建插件

【问题讨论】:

  • Web API 正在运行吗?

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


【解决方案1】:

您是否看到 404 响应代码? 您是否尝试过从 postman 或 fiddler 调用 api 方法? 我总是尝试从其中一个呼叫,以便您可以确定 api 正确响应。这将告诉您问题是否出在您的消费代码中。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2018-08-25
    相关资源
    最近更新 更多