什么是自托管?它可以与webapi一起使用来与设备通信吗



我有一个要求,我的Web服务(用WebAPI编写)应该将一些数据打印到与我的服务器关联的打印机上。

(简而言之,我的客户端会向我的WebAPI服务发送一些数据,我的域(服务器域)中的打印机应该打印这些数据。)

我在IIS中托管该服务,并使用PrintManager打印数据。但是,我们似乎不应该这样做,因为IIS中托管的web服务实际上不应该与本地硬件通信(这似乎不是一种推荐的方法)。

虽然有很多关于自托管WCF或WebAPI的教程,但我正在尝试了解在这种情况下是否可以使用自托管。

我是否可以在Windows服务中自行托管WebAPI应用程序,以便该服务有权访问打印机?

Self-hosting是在您控制的环境(WinForms、Console、Windows Service等)中托管Web API的能力。

因此,简而言之,是的,您可以自托管Web API解决方案,并且您可以使用与以下代码类似的代码:

var config = new HttpSelfHostConfiguration("http://localhost:8080");
config.Routes.MapHttpRoute(
    "API Default", "api/{controller}/{id}", 
    new { id = RouteParameter.Optional });
using (HttpSelfHostServer server = new HttpSelfHostServer(config))
{
    server.OpenAsync().Wait();
    Console.WriteLine("Running on port 8080 - Press Enter to quit.");
    Console.ReadLine();
}

自托管wcf服务意味着不依赖IIS来启动服务器,而是作为主机自己启动服务。

以下是MSDN对主机的介绍:

主机应用程序的作用是启动和停止服务,侦听来自客户端的请求,将这些请求定向到服务,并将响应发送回客户端。

主机应用程序可以是控制台应用程序、windows服务或其他任何应用程序。

因此,为了回答您的问题,是的,您可以为此目的使用服务。

相关内容

最新更新