【问题标题】:How to debug Web Api class library如何调试 Web Api 类库
【发布时间】:2017-02-28 10:38:30
【问题描述】:

我有一个 Asp.Net WebApi 项目。我创建了一个类库,并在其中添加了控制器和模型。

项目结构在另一个StackOverflow question中解释。

问题:

现在我需要调试类库中的控制器。 最简单的方法是什么?

更新 我的问题是关于在 Visual Studio 2015 中调试类库。 因为它是一个类库,需要附加到运行 WabApi 项目的进程中。

所以当我在 VS 中点击调试按钮时,需要启动 WEBAPI 进程并自动附加到类库调试会话。

在 Visual Studio 项目属性中,有一个调试选项可以设置“启动外部程序”。如何在这里关联 WebApi 项目? 或者有没有其他选择?

【问题讨论】:

  • 使用 REST 客户端,例如 Postman (Chrome) 或 Rest Client (FireFox),两者都可以在市场上买到。或者理想情况下,围绕它编写测试!
  • 你有单元测试项目吗?这是最简单的方法
  • 我的问题是关于使用正在运行的进程自动调试。 VS2015。我现在更新了问题。

标签: c# asp.net asp.net-web-api asp.net-web-api2 class-library


【解决方案1】:

首先,您的 WEB API 项目应该包含您的控制器,而不是您的类库。

您展示的堆栈溢出是一种非常糟糕的做法,因为您的 WEB API 充当了应用程序的入口点(PRESENTATION LAYER)。

您确实可以为您的域模型创建一个库“模型”,但也应该创建一个用于访问您的数据库的库,称为数据访问层 (DAL)。

如果您想向其中添加一些业务逻辑,您需要一个称为业务层 (BL) 的第四个库。

所以流程应该是这样的:

客户端 表示层 业务层 数据访问层 数据库。

PL、BL 和 DAL 可以引用模型库。这整个层的东西称为 N 层架构。

您还应该查看表示层的 MVC 模式。

好的,现在架构已经完成,实际调试/测试控制器非常简单。

第一个选项可能是使用 POSTMAN 将数据发送到控制器端点,然后向控制器添加断点并逐步调试。

第二种选择是使用 Swagger,它将为您提供控制器端点的用户友好界面,以及实际向其发送内容的能力。它还将为您提供有关消息需要如何构建的模板 JSON。

有关 N 层和 MVC 的更多信息

N 层:https://en.wikipedia.org/wiki/Multitier_architecture

MVC:https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

Swagger 教程:https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger

问候!

【讨论】:

  • 据我所知,在类库中添加控制器在企业级大型应用程序中非常常见。网上有很多文章。顺便说一句,我的问题是关于使用正在运行的进程自动调试。 VS2015。我现在更新了问题。
  • 我误解了这个问题,抱歉。
【解决方案2】:

我相信最简单的方法是创建一个控制台应用程序来托管您的 web api,然后您可以使用 fiddler /postman 之类的工具向您的 api 发送请求。

https://docs.microsoft.com/en-us/aspnet/web-api/overview/older-versions/self-host-a-web-api

【讨论】:

  • 我的问题是关于使用正在运行的进程自动调试。 VS2015。我现在已经更新了这个问题。很抱歉造成混乱。
  • 对不起,我弄混了。我会排除这个答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
相关资源
最近更新 更多