c# - 如何通过像 ASMX Web 服务一样创建它的实例来使用 WebAPI

标签 c# asp.net asp.net-web-api

我将 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/

相关文章:

c# - 敏感数据本地、GitHub上,支持CI/CD

c# - 如何创建将结果返回到文本文件的 MySql 数据库连接?

c# - 当我尝试在属性初始化中使用 nameof 时出现错误 cs0120

c# - ASP.NET 网站的 token 身份验证

c# - 来自类结构的类使用细节

asp.net-web-api - 手动组合请求时,WebAPI RequestBody 中的 QueryString 被截断?

c# - 如何为 HttpClient (WinForms) 设置默认的 json 序列化设置

c# - 我可以使用 ninject 即时更改实现吗?

asp.net - 设置为可更新的预编译 Web 应用程序项目的性能优势?

asp.net - Web api 身份验证架构