我有一个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