2013-07-16 2 views
0

저는 signalR과 Owin이 (가) 새롭으며 도움이 필요합니다.Windows 서비스의 자체 호스트로 SignalR 호스팅

[내 허브는 자체 호스팅됩니다] 라이브러리에 내 signalR 코드를 모두 썼습니다. 그런 다음 Windows 서비스 응용 프로그램에서 lib를 참조하고 Windows 서비스 응용 프로그램에 "Microsoft.Owin.Host.HttpListener"패키지를 설치하고 실행하려고했습니다. 그 유선 예외를 얻고있다 :

순서 내가의 WinForm 응용 프로그램에서 내 라이브러리를 테스트하고 제대로 작동

일치하는 요소를 포함하지 않는다.

나는 왜 내가 그것을 얻고 있는지 전혀 모른다.

업데이트 : 코드 예제 : 내 라이브러리 "MYLIB"에서

개인으로 IDisposable 호스트;

private bool Start() 
      { 
       try 
          { 
           string url = "http://localhost:5000/"; 
        host = SelfHost.Host(url); 
          } 
          catch (Exception ex) 
          { 
           log.WriteLine("************HOSTING FAILED     ********************************* ex.ToString():"+ ex.ToString()+ 
           " Ex.StackTrace: "+ex.StackTrace +" EX.Message: " + ex.Message + "***************"); 
          }  
      } 

private bool Stop() 
     { 
      if (host != null) 
      { 
       host.Dispose(); 
      } 
     } 

내 SelfHost 클래스 :

myLib l = new myLib(); 

내가합니다 (ONSTART를 구현) 창문 :

class SelfHost 
    { 
     public static IDisposable Host(string url) 
     { 
      return WebApplication.Start<SelfHost>(url); 
     } 

     public void Configuration(IAppBuilder app) 
     { 
      // Turn cross domain on 
      var config = new HubConfiguration { EnableCrossDomain = true }; 

      // This will map out to http://localhost:8080/signalr by default 
      app.MapHubs(config); 
     } 

    } 

내 창문이 lib 디렉토리에서 서비스 응용 프로그램을 객체를 만든 후 myLib에서 Start() - 함수를 호출하는 스레드를 시작하는 서비스 :

protected override void OnStart(string[] args) 
    { 
     Thread t = new Thread(new ThreadStart(this.StartServiceThread)); 
     t.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 
     t.Start(); 
    } 
private void StartServiceThread() 
    { 
    l.Start(); 
    } 

출력 [전 정보]

************HOSTING FAILED ********************************* 
ex.ToString(): 
    System.InvalidOperationException: Sequence contains no matching element 
     at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate) 
     at Microsoft.Owin.Hosting.ServerFactory.DefaultServerFactoryLoader.Load(String serverName) 
     at Microsoft.Owin.Hosting.KatanaEngine.ResolveServerFactory(StartContext context) 
     at Microsoft.Owin.Hosting.KatanaEngine.Start(StartContext context) 
     at Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions options) 
     at Microsoft.Owin.Hosting.KatanaStarter.Start(StartOptions options) 
     at Microsoft.Owin.Hosting.WebApplication.Start[TStartup](IServiceProvider services, StartOptions options) 
     at Microsoft.Owin.Hosting.WebApplication.Start[TStartup](StartOptions options) 
     at Microsoft.Owin.Hosting.WebApplication.Start[TStartup](String url) 
     at SelfHost.Host(String url) in SelfHost.cs:line 29 
     at myLib.Start() in myLib.cs:line 381 

Ex.StackTrace: 
    at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate) 
     at Microsoft.Owin.Hosting.ServerFactory.DefaultServerFactoryLoader.Load(String serverName) 
     at Microsoft.Owin.Hosting.KatanaEngine.ResolveServerFactory(StartContext context) 
     at Microsoft.Owin.Hosting.KatanaEngine.Start(StartContext context) 
     at Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions options) 
     at Microsoft.Owin.Hosting.KatanaStarter.Start(StartOptions options) 
     at Microsoft.Owin.Hosting.WebApplication.Start[TStartup](IServiceProvider services, StartOptions options) 
     at Microsoft.Owin.Hosting.WebApplication.Start[TStartup](StartOptions options) 
     at Microsoft.Owin.Hosting.WebApplication.Start[TStartup](String url) 
     at SelfHost.Host(String url) in SelfHost.cs:line 29 
     at myLib.Start() in myLib.cs:line 381 
EX.Message: Sequence contains no matching element*************** 
사전에

감사합니다!

+0

예제 코드 – ccellar

+0

을 표시하고 stacktrace (.ToString())를 포함한 예외에 대한 자세한 정보를 제공해주십시오. –

+0

나는 그것을했다, 내 업데이 트를 참조하십시오 –

답변

2

문제점이 무엇인지 알아 냈습니다. 두 달 전에 myLib 코드를 작성하고 2 달 전에 작성한 winForms 응용 프로그램을 사용하여 테스트했습니다.

어제 나는 내 Windows 서비스 응용 프로그램에 새로운 Owin 패키지를 설치하고 이전에 작성한 동일한 라이브러리를 사용하려고 했으므로 오류가 발생했습니다.

문제는 myLib (이전 버전 Owin.Hosting)의 NuGetPackage가 12 일 전에 출시 된 새 패키지 버전과 호환되지 않는다는 것입니다. 새로운 변경 사항은 이전 버전의 WebApplication을 지원하지 않습니다. 이제는 WebApp라고합니다.

관련 문제