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

时间:2014-09-09 13:16:56

标签: c# .net asp.net-web-api windows-services self-hosting

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

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

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

虽然有许多关于自托管WCF或WebAPI的教程,但我试图找出在这种情况下是否可以使用自托管。

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

2 个答案:

答案 0 :(得分:4)

自托管是指在您控制的环境(WinForms,控制台,Windows服务等)中托管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();
}

答案 1 :(得分:2)

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

以下是MSDN关于主持人的说法:

  

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

主机应用程序可以是控制台应用程序,Windows服务或其他任何东西。

所以回答你的问题,是的,你可以为此目的使用服务。