2013-08-13 4 views
5

Windows 서비스 내에서 http를 통해 정적 콘텐츠를 제공하려면 OWIN을 사용하고 있습니다. (Windows 서비스 용 웹 관리 툴을 임베드하려면). 하나의 파일 만 OWIN UseStaticFiles로 제공 할 수 있습니다.

나는 이상한 문제가 발생할 수 :

  • 내가 서비스를 실행하면, 난 단지 "웹"폴더에 파일, 모든 연속적인 호출에 액세스 할 수있는 브라우저 텔링에 결과 그 페이지는 사용할 수 없습니다 (ERR_CONNECTION_RESET).
  • 임베디드 WebApi 은 액세스 할 수 있습니다..
  • 같은 주소와 포트로 서비스를 다시 시작하면 파일이 보이지 않습니다.
  • 나는 다른 포트에서 서비스를 다시 시작하면 그런데

이,이 "웹"폴더에서이 파일이에 대해 "항상 복사"에 설정되어 ... 일단, 나는 파일에 액세스 할 수 있습니다 "출력 디렉토리로 복사"속성.

누구나 무슨 일이 일어날 지 알고 있습니까?

내 시작 구성 클래스 여기를 참조하십시오

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

...를 호스팅하는 여기에 내가 무슨 일이 잘못 알고 있다고 생각

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 

     } 
    } 

답변

2

을 내 Windows 서비스를 참조하십시오 : 제 3 자 프레임 워크를 당신 알파 또는 베타 중 하나를 사용하고 있습니다. 당신은 그들과 그들의 일반적인 상태를 경험하면서 그것을 기반으로해서는 안됩니다.

나는 거의 동일한 설정 (link to project files)을 만들었고 똑같은 결과를 보았습니다. 사용 된 라이브러리는 아직 작업까지는 진행되지 않습니다.

편집 :

나는 그것이 Microsoft.Owin.StaticFiles 라이브러리의 버전 0.23.20815.0으로 훨씬 더 relaibly 실행 얻을 수 있습니다. 나는 최신 Katana 소스에서 직접 제작했습니다. 최신 코드는 my GitHub page에서 찾을 수 있습니다.

+0

내가 ... 다행 누군가가 내 이야기를 백업 해요 당신은 같은 목표를 달성하기 위해 어떤 대안을 알고 일이? – Stivni

+0

어쩌면 내가 이러한 라이브러리를 포크해야한다. 대신에 풀 요청을 보내라. – Stivni

+0

@Stivni 필자는 Owin을 처음 접했고 확실한 대안을 모른다. 이 모양이 좋아 보입니까 : [SendFile] (http://owin.org/extensions/owin-SendFile-Extension-v0.3.0.htm)? 당신은 또한 IIS에서 호스팅되는 웹 API를 사용할 수 있지만, 궁금한 점이 없다고 생각합니다. – meilke

0

비슷한 구성으로 WebApi 및 StaticFiles가있는 OWIN 호스트로 Windows 서비스가 사용됩니다. 이걸로 나는 너의 문제를 보지 못했다. 괜찮 았어.

나는 Katana 야간 빌드에서 StaticFiles 버전 0.24.0-pre-20624-416을 사용하고 있습니다. 어쩌면 이것은 또한 당신의 문제를 해결할 것입니다. 또 다른 차이점은 StaticFiles는 절대 경로가 아닌 상대 경로로 구성한다는 것입니다. 어떤 차이를 만들어서는 안되지만 누가 알겠습니까?

은 BTW : 나는 2 개월 전 StaticFiles에 대해 블로그 : http://ritzlgrmft.blogspot.de/2013/06/owin-with-static-files-exception.html

관련 문제