5

OWIN を使用して、Windows サービス内から http 経由で静的コンテンツを提供できるようにしています。(Windows サービス用の Web 管理ツールを組み込むため)。

私はいくつかの奇妙な動作を経験します:

  • サービスを実行すると、「web」フォルダーにある1 つのファイルにしかアクセスできず、連続して呼び出すたびに、ページが利用できない(ERR_CONNECTION_RESET) というブラウザーが表示されます。
  • 埋め込まれた WebApiは引き続きアクセス可能です。
  • 同じアドレスとポートでサービスを再起動すると、ファイルは表示されません。
  • 別のポートでサービスを再起動すると、一度ファイルにアクセスできます...

ちなみに、この「web」フォルダ内のこのファイルは、「出力ディレクトリにコピー」プロパティが「常にコピー」に設定されています。

誰が何がうまくいかないのか知っていますか?

ここで私のスタートアップ構成クラスを参照してください

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

1

私は同様の構成を使用します: WebApi と StaticFiles を使用した OWIN ホストとしての Windows サービス。これで私はあなたの問題を見たことがありません。それはうまくいっています。

Katana Nightly Builds の StaticFiles バージョン 0.24.0-pre-20624-416 を使用しています。多分これはあなたの問題も解決します。もう 1 つの違いは、StaticFiles を絶対パスではなく相対パスでのみ構成することです。違いはありませんが、誰が知っていますか?

ところで: 2 か月前に StaticFiles についてブログを書きました: http://ritzlgrmft.blogspot.de/2013/06/owin-with-static-files-exception.html

于 2013-08-15T14:05:55.077 に答える