2013-03-20 98 views
0

我有一個工作控制檯應用程序,其中所有地址和配置都在配置文件中。但是,當我嘗試將此代碼移動到WCF服務應用程序時,出現各種錯誤。將WebServiceHost轉換爲WCF服務應用程序

class Program 
{ 
    static void Main(string[] args) 
    { 

     WebServiceHost host = new WebServiceHost(typeof(ImageService)); 
     host.Open(); 

     Console.WriteLine("Service up"); 
     Console.ReadLine(); 

     host.Close(); 
    } 
} 

問題是WCF服務應用程序自動啓動並且沒有主控方法,如控制檯應用程序。如何在不存在主方法的情況下定義WCF服務以啓動WebServiceHost?

+0

是否要自行託管此WCF服務?當你說你的項目連接到Azure服務總線時,它是什麼。您是否試圖對內部調用Azure服務總線的WCF服務執行調用? – Rajesh 2013-03-20 16:29:55

+0

我試圖建立一個可以使用REST從Azure服務總線中繼調用的服務。對於像上面那樣初始化的服務,這可以正常工作。當然,我不想使用現在使用的控制檯應用程序,所以我想將其轉換爲託管在IIS上的WCF服務。 – Zeezer 2013-03-20 19:03:05

回答

0

我發現了一個非常簡單的解決方案來解決這個問題。爲了告訴WCF使用Web服務來代替,所有需要的是把它添加到.svc文件

Factory="System.ServiceModel.Activation.WebServiceHostFactory" 

不知怎的,我couldent打開Visual Studio中文件的,所以我導航到項目文件夾,打開它使用記事本。我的服務.svc文件如下所示:

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="Service1.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %> 
0

您必須通過繼承ServiceBase類來創建自己的服務。覆蓋OnStart()方法並在實現中打開您的WCF服務。重寫OnStop()方法並關閉實現中的WCF服務。

+0

這是如何完成的?我已經嘗試從ServiceBase繼承並在上面的示例中用OnStart()覆蓋,但必須添加更多內容,OnStart()方法永遠不會被調用 – Zeezer 2013-03-20 14:23:30

+0

創建服務的實例並調用OnStart() – flayn 2013-03-20 15:44:01

+0

什麼類型的項目你現在有嗎? – flayn 2013-03-20 15:45:01