首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在中使用自主机托管SignalR

在中使用自主机托管SignalR
EN

Stack Overflow用户
提问于 2013-07-16 12:25:10
回答 1查看 2.7K关注 0票数 0

我是signalR和Owin的新手,需要帮助。

我在一个库中编写了所有的signalR代码,我的集线器将由自己托管。然后,我从一个windows服务应用程序中引用了这个库,在windows服务应用程序中安装了包"Microsoft.Owin.Host.HttpListener“,并试图执行它。我得到的是连线异常:

序列不包含匹配元素

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

我不知道我为什么要这么做。

更新:代码示例:在"myLib“库中

专用IDisposable主机;

代码语言:javascript
复制
    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课程:

代码语言:javascript
复制
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服务应用程序中从这个库创建对象之后:

代码语言:javascript
复制
myLib l = new myLib();

我实现了windows的OnStart(),它启动了一个线程,该线程从myLib调用Start()-function:

代码语言:javascript
复制
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-Details

代码语言:javascript
复制
************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***************

提前谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-17 13:40:19

我知道问题出在哪里了。我两个月前编写了myLib代码,并使用两个月前编写的winForms应用程序对其进行了测试。

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

问题是,NuGetPackage in myLib (旧版本的Owin.Hosting)与12天前发布的新包版本不兼容。新的更改不支持WebApplication (从旧版本)。现在叫WebApp。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17676464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档