我开发了一个Windows服务,其任务实际上是启动具有特定URL和端口的主机.以下是我现在的情况.Program.cs中static void Main(){ServiceBase[] ServicesToRun;ServicesToRun = new ServiceBase[] { new WindowsDxServi...

我开发了一个Windows服务,其任务实际上是启动具有特定URL和端口的主机.以下是我现在的情况.
Program.cs中
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new WindowsDxService()
};
ServiceBase.Run(ServicesToRun);
}
ProjectInstaller.cs
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
}
WindowsDxService.cs
public partial class WindowsDxService : ServiceBase
{
public WindowsDxService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
var url = "http://127.0.0.1:9000";
using (var host = new NancyHost(new Uri(url)))
{
host.Start();
}
}
}
在ProjectInstaller.cs [Design]文件中配置serviceProcessInstaller1和serviceInstaller1.
serviceProcessInstaller1
Account=LocalSystem
serviceInstaller1
StartType=Automatic
Library.cs
public class Library : NancyModule
{
public Library()
{
Get["/"] = parameters =>
{
return "Hello world";
};
Get["jsontest"] = parameters =>
{
var test = new
{
Name = "Guruprasad Rao",
Twitter="@kshkrao3",
Occupation="Software Developer"
};
return Response.AsJson(test);
};
}
}
基本上我遵循了this tutorial,它实际上显示了如何使用我成功的控制台应用程序来完成它,但我希望将其作为Windows服务,实际上在系统启动时启动具有指定端口的主机.该服务已成功启动并正在运行,但每当我浏览同一系统中的URL时,它都不显示该页面,这意味着我们的基本此网页不可用消息.我还需要做什么配置才能启动主机?希望得到帮助.
解决方法:
您在开始服务时处置主机.我会建议这样的事情:
public partial class WindowsDxService : ServiceBase
{
private Host host;
public WindowsDxService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
this.host = new NancyHost(...)
this.host.Start();
}
protected override void OnStop()
{
this.host.Stop();
this.host.Dispose();
}
}
如果使用TopShelf库,您可能会发现编写服务要容易得多.
本文标题为:c# – 使用Nancy的Windows服务无法启动主机


基础教程推荐
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- Unity shader实现高斯模糊效果 2023-01-16
- C#中 Json 序列化去掉null值的方法 2022-11-18
- C#中的Linq to JSON操作详解 2023-06-08
- C# 解析XML和反序列化的示例 2023-04-14
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- 实例详解C#实现http不同方法的请求 2022-12-26
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16