我有一個WCF服務,有時託管在IIS中,有時託管在Windows服務中。這對於我的應用程序的不同部署選項是必需的。在服務對象中確定託管位置的好方法是什麼?如何確定WCF服務是否託管在IIS或其他內部?
我想這樣做的原因是,當我的服務託管在IIS中時,它以常規方式從web.config文件獲取連接字符串信息。當它由Windows服務託管時,它以不同的方式(從註冊表中的信息)獲取配置信息。在我的服務對象的構造函數中,我要記下從哪裏獲取連接字符串信息,例如這樣的事情:
public void MyServiceObject()
{
_hostedInIis = isHostedInIis();
}
private string ConnectionString()
{
if (_hostedInIis)
return ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
else
return GetConnectionStringFromRegistry();
}
另外,有沒有辦法,我可以傳遞一些配置信息,當我託管它的Windows服務?例如傳遞它的連接字符串或一個標誌,說它是在Windows服務中託管的。
對於這些部署中的每一個,您將擁有不同的端點嗎? – Aravind 2011-06-06 12:16:06
側面的問題:是否有一個原因,你不想保持你的服務部署的app.config配置設置? – jlafay 2011-06-06 12:26:18
@Aravind,你的意思是不同的終點uri?由於windows服務使用特定的端口,它們幾乎肯定會有所不同,但IIS可能使用相同的URI,並且在開發過程中我們經常會這樣做。 – Rory 2011-06-06 12:46:10