Signalr 在Windows服务中使用自主机托管信号器

Signalr 在Windows服务中使用自主机托管信号器,signalr,signalr-hub,signalr.client,owin,Signalr,Signalr Hub,Signalr.client,Owin,我是新来的,需要帮助 我在一个库中编写了所有信号器代码[我的集线器将自托管]。然后,我从windows服务应用程序中引用了该库,在windows服务应用程序中安装了包“Microsoft.Owin.Host.HttpListener”,并尝试执行它。 我得到一个有线例外: 序列不包含匹配元素 我在winForm应用程序中测试了我的库,它工作正常 我不知道我为什么会这样 更新:代码示例: 在我的图书馆“myLib” 私有可识别主机 private bool Start()

我是新来的,需要帮助

我在一个库中编写了所有信号器代码[我的集线器将自托管]。然后,我从windows服务应用程序中引用了该库,在windows服务应用程序中安装了包“Microsoft.Owin.Host.HttpListener”,并尝试执行它。 我得到一个有线例外:

序列不包含匹配元素

我在winForm应用程序中测试了我的库,它工作正常

我不知道我为什么会这样

更新:代码示例: 在我的图书馆“myLib”

私有可识别主机

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

我的自我主持课程:

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

    }
我实现了windows服务的OnStart(),它启动了一个线程,该线程从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();
    }
输出[Ex详细信息]

************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***************

提前谢谢

我发现了问题所在。我在两个月前编写了myLib代码,当时正在使用我在两个月前编写的winForms应用程序进行测试

但是昨天我在我的windows服务应用程序中安装了新的Owin包,并尝试使用我以前编写的库,因此我得到了错误


问题是myLib(Owin.Hosting的旧版本)中的NuGetPackage与12天前发布的新包版本不兼容。新更改不支持WebApplication(旧版本)。它被称为now WebApp。

请显示一些示例代码,并提供异常的完整详细信息,包括stacktrace(.ToString()It)。我做到了,请查看我的更新这里有一个相关链接,其他人可以通过Windows服务尝试host Signaler:
************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***************