在Windows服务上的SignalR自托管

时间:2014-01-16 20:56:42

标签: c# windows-services signalr

我在C#(vs2013)上写了一个小型POC应用程序(控制台应用程序),它使得:主机和客户端。

主机方代码:

string url = "http://*:8900/";

using (WebApp.Start(url))
{
    Console.WriteLine("Server running at " + url);
    lock (just4lock)
        Monitor.Wait(just4lock);
}

仅当我使用“以管理员身份运行”运行我的(控制台)应用程序时,它才有效。

好的,现在我想将此代码移到我的Windows服务应用程序中。当我在Windows服务上运行相同的主机代码时,我收到此错误:

An unhandled exception of type 'System.MissingMemberException' occurred in Microsoft.Owin.Hosting.dll

Additional information: The server factory could not be located for the given input: Microsoft.Owin.Host.HttpListener

我的服务以“本地系统帐户”运行。我没有看到任何让它“以管理员身份运行”的选项。

您是否知道如何在没有管理员的情况下使SignalR自托管工作?

我怎样才能让这个Windows服务以管理员身份运行?

谢谢!

2 个答案:

答案 0 :(得分:15)

我遇到了同样的问题,而我的解决方案就是将程序集Microsoft.Owin.Host.HttpListener添加到我的项目中。

答案 1 :(得分:13)

您是否尝试过使用已注册的Startup对象?

WebApp.Start<Startup>(url);

...然后

class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }

这对我们来说很好......