2013-07-16 49 views
0

我是signalR和Owin的新用戶,需要幫助。在Windows服務中託管SignalR與自己的主機

我在庫中寫了我所有的signalR代碼[我的hub將自行託管]。然後我從Windows服務應用程序引用該lib,在Windows服務應用程序中安裝Package「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()it)。 –

+0

我做到了,看到我的更新 –

回答

2

我想出了問題所在。我在兩個月前編寫了myLib代碼,並使用2個月前寫過的winForms應用程序進行測試。

但昨天我在我的Windows服務應用程序中安裝了新的Owin軟件包,並嘗試使用之前編寫的相同庫,所以我得到了錯誤。

問題是,myLib中的NuGetPackage(Owin.Hosting的舊版本)與12天前發佈的新軟件包版本不兼容。新更改不支持WebApplication(來自舊版本)。它現在稱爲WebApp。

相關問題