2014-01-16 164 views
7

我在C#(vs2013)上編寫了一個小型POC應用程序(控制檯應用程序),它使得:主機和客戶端。SignalR在Windows服務上自行託管

主機端的代碼:

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服務以管理員身份運行?

謝謝!

回答

12

您是否嘗試過使用註冊的啓動對象?

WebApp.Start<Startup>(url); 

然後...

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

這只是正常的我們...

+0

嗨我有一個Web Api將數據返回到我的客戶端,但也將有一個Windows服務,將處理長時間運行的任務。那麼我需要使用SignalR服務器嗎?一個用於我的web api,一個用於我的Windows服務?如果是這樣,我怎麼能在JavaScript客戶端上處理?謝謝 – VAAA

+2

嗨,我會說這真的是一個全新的問題,與上面提到的問題有所不同 - 隨時提出一個新問題! – penderi

+0

@ No1Lives4Ever它真的幫助你嗎?我有同樣的問題,它不能幫助我。我在單獨的文件中創建了Startup。我需要移動此程序嗎? – RredCat

14

我有同樣的問題,對我的解決辦法是隻添加到一個參考彙編Microsoft.Owin.Host.HttpListener到我的項目。