我将 Asp.NET WebApi 作为业务层。我想通过简单地调用业务 Controller 来调用它的方法。 像这样的东西:(但我不能像服务引用一样添加这个 webapi)
Business.API.UserController Users = new Business.API.UserController();
Users.GetAllUser();
之前我使用 WCF Web 服务,我可以通过“添加服务引用”添加它并设置一些端点来创建 Web 服务实例。 我不能在 WebAPI 中这样做(我认为)。我已经阅读了很多关于它的文章,但其中大部分是关于通过 HttpRequest 调用它的方法。 这样:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:38104/");
client.DefaultRequestHeaders.Accept.Clear();
HttpResponseMessage response;
response = await client.GetAsync("api/Weather");
if (response.IsSuccessStatusCode)
{
WeatherClient[] reports = await response.Content.ReadAsAsync<WeatherClient[]>();
}
}
我认为使用 Web 服务是荒谬的。 是我错了还是我有问题?
最佳答案
虽然您没有任何问题,但这也不是使用网络服务的可笑方式。实际上;这是使用网络服务的唯一方式; WCF 为您隐藏了该代码。
<子> 免责声明:还有其他 .NET 类和库可以执行 HTTP 请求,并且可能具有更简单的 API,但没有什么可以像 WCF 那样将其隐藏为一个类
WCF 服务发布有关自身的元数据,这就是“服务引用”起作用的原因。 Web API 没有类似的概念,你必须手动做 HTTP 请求。您当然可以将该代码包装到一些通用函数中以供重用。
使用正确的辅助方法,您可以接近“RPC”接口(interface),只需要传入每个方法的端点而不是名称。
关于c# - 如何通过像 ASMX Web 服务一样创建它的实例来使用 WebAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48027395/