Pregunta

I am new by signalR and Owin and need help.

I wrote all my signalR code in a library [My hub will be self hosted]. Then i referenced that lib from a windows service application, installed the Package "Microsoft.Owin.Host.HttpListener" in the windows service application and tried to execute it. I am getting that wired exception:

Sequence contains no matching element

I tested my Library in a winForm application and it worked correctly.

I have no idea why i am getting that.

Update: Code example: In My Library "myLib"

private IDisposable host;

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

My SelfHost class:

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

    }

after creating an object from this lib in my windows service application:

myLib l = new myLib();

i implements the OnStart() of the windows Service which starts a thread that calls the Start()-function from myLib:

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

Output [Ex-Details]

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

Thanks in Advance!

¿Fue útil?

Solución

I figured out what the problem was. I wrote myLib Code two months ago and was testing it using the winForms Application that i also wrote 2 months ago.

But yesterday i installed the new Owin Packages in my windows service application and tried to use the same library that i wrote before and so i got the error.

The problem is that the NuGetPackage in myLib (old version of Owin.Hosting) is not compatible with the new package version which is released 12 days ago . The new changes do not support WebApplication (from old version). It is called now WebApp.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top