我正在使用 OWIN 从 Windows 服务中通过 http 提供静态内容。(为 Windows 服务嵌入 Web 管理工具)。
我遇到了一些奇怪的行为:
- 当我运行该服务时,我只能访问“web”文件夹中的一个文件,每次连续调用都会导致浏览器告诉该页面不可用(ERR_CONNECTION_RESET)。
- 嵌入式 WebApi保持可访问性。
- 当我使用相同的地址和端口重新启动服务时,文件保持不可见。
- 当我在另一个端口上重新启动服务时,我可以访问一次文件...
顺便说一句,这个“web”文件夹中的文件被设置为“复制到输出目录”属性的“始终复制”。
有谁知道出了什么问题?
在这里查看我的 StartUp 配置类
public class WebStartUp
{
public void Configuration(IAppBuilder app)
{
string staticFilesDir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "web");
app.UseStaticFiles(staticFilesDir);
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
app.UseWebApi(config);
}
}
在此处查看托管它的我的 Windows 服务...
public partial class MyService : ServiceBase
{
private IDisposable webApp;
private const string ServiceAddress = "http://localhost:2345";
public MyService()
{
}
protected override void OnStart(string[] args)
{
InternalStart();
}
internal void InternalStart()
{
webApp = WebApp.Start<WebStartUp>(url: ServiceAddress);
}
protected override void OnStop()
{
}
public static void Main()
{
#if DEBUG
var service = new MyService();
Console.WriteLine("starting");
service.InternalStart();
Console.ReadLine();
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] {
new RaceManagerService();
}
ServiceBase.Run(ServicesToRun);
#endif
}
}