我要求我的webservice(用WebAPI编写)应该将一些数据打印到与我的服务器关联的打印机。
(简而言之,我的客户会将一些数据发送到我的WebAPI服务,我的域(服务器域)中的打印机应该打印它。)
我在IIS中托管服务并使用PrintManager打印数据。但是,似乎我们不应该这样做,因为IIS中托管的Web服务实际上不应该与本地硬件通信(这似乎不是推荐的方法)。
虽然有许多关于自托管WCF或WebAPI的教程,但我试图找出在这种情况下是否可以使用自托管。
我可以在Windows服务中自行托管我的WebAPI应用程序,以便该服务有权访问打印机吗?
答案 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服务或其他任何东西。
所以回答你的问题,是的,你可以为此目的使用服务。