5

我正在使用 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

        }
    }
4

2 回答 2

2

我想我知道出了什么问题:您使用的第 3 方框架处于 alpha 或 beta 版本。根据您对它们的经验及其一般状态,您不应依赖它们。

我创建了一个几乎相同的设置(链接到项目文件)并看到了完全相同的结果。使用的库还不能胜任这项任务。

编辑:

我可以使用 Microsoft.Owin.StaticFiles 库的 0.23.20815.0 版本更可靠地运行它。我使用最新的 Katana 资源自己构建了它。你可以在我的 GitHub 页面找到我最新的代码。

于 2013-08-14T16:28:57.437 回答
1

我使用类似的配置:Windows 服务作为带有 WebApi 和 StaticFiles 的 OWIN 主机。有了这个,我从来没有看到你的问题。它工作正常。

我正在使用 Katana Nightly Builds 中的 StaticFiles 版本 0.24.0-pre-20624-416。也许这也可以解决您的问题。另一个区别是,我仅使用相对路径配置 StaticFiles,而不是像您那样使用绝对路径。应该没什么区别,但谁知道呢?

顺便说一句:我在 2 个月前写过关于 StaticFiles 的博客:http ://ritzlgrmft.blogspot.de/2013/06/owin-with-static-files-exception.html

于 2013-08-15T14:05:55.077 回答