如何以編程方式在使用C#編寫的Windows服務中使用this.ServiceName
獲取服務名稱?當我嘗試這個,它是要求組裝參考,但它不接受任何東西:如何獲取用C#編寫的Windows服務中的ServiceName?
string path = this.ServiceName + ".config";
但它會得到錯誤。
如何以編程方式在使用C#編寫的Windows服務中使用this.ServiceName
獲取服務名稱?當我嘗試這個,它是要求組裝參考,但它不接受任何東西:如何獲取用C#編寫的Windows服務中的ServiceName?
string path = this.ServiceName + ".config";
但它會得到錯誤。
您的服務需要從System.ServiceProcess.dll
繼承ServiceBase
。
當您擁有該產品時,您將可以訪問this.ServiceName
屬性。
樣品:
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
string test = this.ServiceName;
}
protected override void OnStop()
{
}
}
如果你想從主()(計劃類)訪問它,那麼你可以做這樣的事情:
namespace WindowsService1
{
static class Program
{
static ServiceBase[] _servicesToRun;
static void Main()
{
_servicesToRun = new ServiceBase[]
{
new Service1()
};
string serviceName = _servicesToRun[0].ServiceName;
ServiceBase.Run(_servicesToRun);
}
}
}
要訪問配置文件,您需要的應用程序名稱不是服務名稱(如果您使用的是標準的.Net應用程序配置文件)。
要獲取應用程序的可執行使用System.AppDomain.CurrentDomain.FriendlyName
要查找config文件你的服務,做不是使用服務名稱。這不是CLR的工作方式,它根據EXE名稱選擇.config文件。修復:
var path = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
你會得到什麼錯誤? – HABJAN 2011-01-11 12:04:31
你能告訴我們你得到的確切錯誤是什麼嗎?如果編譯器給你一個錯誤,那麼發佈它就像它出現一樣很有幫助。這給了我們更多的信息,而不僅僅是「它的錯誤」。 – 2011-01-11 12:05:03