我正在開發一個C#WCF項目,除了相當大但希望簡單的問題外,我已經完成了它的工作。如何保持WCF Soap服務在程序運行期間打開
的WCF服務是從我的控制檯應用程序中託管和我的控制檯應用程序調用一個函數不同的類以打開WCF服務的連接。
但是,如果函數的最後一行是host.open();函數調用然後完成到連接關閉,服務不能再使用。但是,如果我在console.open之後放置Console.ReadLine(),那麼服務將保持打開狀態,我可以使用它,但顯然程序的其餘流程不再運行。
下面是我用來打開主機連接的代碼。
public void startSoapServer()
{
string methodInfo = classDetails + MethodInfo.GetCurrentMethod().Name;
if (String.IsNullOrEmpty(Configuration.soapServerSettings.soapServerUrl) ||
Configuration.soapServerSettings.soapPort == 0)
{
string message = "Not starting Soap Server: URL or Port number is not set in config file";
library.logging(methodInfo, message);
library.setAlarm(message, CommonTasks.AlarmStatus.Medium, methodInfo);
return;
}
//baseAddress = new Uri(string.Format("{0}:{1}", Configuration.soapServerSettings.soapServerUrl,
// Configuration.soapServerSettings.soapPort));
baseAddress = new Uri("http://localhost:6525/hello");
using (ServiceHost host = new ServiceHost(typeof(SoapServer), baseAddress))
{
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
host.Opened += new EventHandler(host_Opened);
host.Faulted += new EventHandler(host_Faulted);
host.Open();
Console.ReadLine();
}
沒有Console.ReadLine()函數完成,連接關閉。如何讓主機在C#應用程序運行期間保持打開狀態。
這個函數調用是通過在控制檯內啓動一些東西,在Main方法中間調用的。
感謝您提供的任何幫助。
現在非常感謝。謝謝你的幫助 – Boardy 2013-03-04 23:47:41