2013-08-13 5 views
5

Ich benutze OWIN, um statische Inhalte über http von innerhalb eines Windows-Dienstes zu dienen. (So betten Sie ein Webverwaltungstool für den Windows-Dienst ein).Ich kann nur eine Datei mit OWIN UseStaticFiles

erlebe ich ein seltsames Verhalten:

  • Wenn ich den Dienst ausführen, kann ich nur Zugriff auf ein Datei, die im „web“ -Ordner ist, jeder aufeinander folgender Aufruf Ergebnisse im Browser zu sagen, dass Die Seite ist nicht verfügbar (ERR_CONNECTION_RESET).
  • Das eingebettete WebApi bleibt zugänglich.
  • Wenn ich den Dienst mit derselben Adresse und demselben Port neu starte, bleiben die Dateien unsichtbar.
  • Wenn ich den Dienst auf einem anderen Port neu zu starten, ich eine Datei einmal ...

Durch die Art und Weise zugreifen können, diese Dateien in diesem „web“ Ordner festgelegt werden „Copy immer“ für die Eigenschaft "In Ausgabeverzeichnis kopieren".

Wer weiß, was schief läuft?

Siehe hier meine StartUp Konfigurationsklasse

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); 
    } 
} 

hier Siehe meinen Windows-Dienst, der es beherbergt ...

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 

     } 
    } 

Antwort

2

Ich glaube, ich weiß, was falsch läuft: Das 3rd-Party-Frameworks, die Sie Verwenden Sie sind entweder in Alpha oder Beta. Sie sollten sich nicht auf sie verlassen, basierend auf Ihrer Erfahrung mit ihnen und ihrem allgemeinen Zustand.

Ich erstellte ein fast identisches Setup (link to project files) und sah genau die gleichen Ergebnisse. Die benutzten Bibliotheken sind der Aufgabe noch nicht gewachsen.

Edit:

Ich konnte es viel mehr relaibly mit Version 0.23.20815.0 der Microsoft.Owin.StaticFiles Bibliothek laufen. Ich habe es selbst aus den neuesten Katana-Quellen gebaut. Sie können meinen neuesten Code unter my GitHub page finden.

+0

Ich bin froh, dass jemand meine Geschichte sichert ... Sie passieren keine Alternativen zu kennen, um das gleiche Ziel zu erreichen? – Stivni

+0

Vielleicht sollte ich diese Bibliotheken abzweigen, sie reparieren und stattdessen eine Pull-Anfrage senden ;-) – Stivni

+0

@Stivni Ich bin relativ neu in Owin und kenne sicher keine Alternativen. Sieht das gut aus: [SendFile] (http://owin.org/extensions/owin-SendFile-Extension-v0.3.0.htm)? Sie könnten auch die Web-API verwenden, die in IIS gehostet wird, aber ich nehme an, dass das nicht in Frage kommt ... – meilke

0

Ich benutze eine ähnliche Konfiguration: Windows-Dienst als OWIN-Host mit WebApi und StaticFiles. Damit habe ich dein Problem nie gesehen. Es funktioniert gut.

Ich verwende StaticFiles Version 0.24.0-pre-20624-416 aus dem Katana Nightly Builds. Vielleicht löst das auch dein Problem. Ein weiterer Unterschied ist, dass ich StaticFiles nur mit einem relativen Pfad konfiguriere, nicht mit einem absoluten, wie du es tust. Es sollte keinen Unterschied machen, aber wer weiß?

BTW: Ich gebloggt Static vor 2 Monaten: http://ritzlgrmft.blogspot.de/2013/06/owin-with-static-files-exception.html

Verwandte Themen