如何访问有关部署WCF服务的位置的信息

时间:2011-06-29 16:00:43

标签: c# .net wcf iis-7 hosting

我在IIS7中托管的多个网站中部署了一个WCF服务,有时在VS2010中部署(开发环境)。

通常多个实例连接到同一个数据库,并且通常它不是一个问题,因为它是只读访问,但有时(如在日志记录中)我需要唯一地标识访问数据库的服务实例。

目前我是通过在web.config中添加特殊属性来实现的,我将稍后将其用作主键的一部分,但我觉得它不是理想的解决方案。

我想到了site-name,如果它托管在IIS和机器名+端口,如果它是从VS2010托管的。

以下是一个问题:如何访问有关WCF服务部署位置的信息以及如何在c#中从已部署服务内部以编程方式执行此操作?它有可能吗?

感谢您的建议。 米甲

2 个答案:

答案 0 :(得分:0)

前几天有一个关于如何获取WCF服务器的IP地址以进行日志记录的问题。本主题可能有所帮助:How to get IP address of WCF web service


您还可以通过查找使用System.Diagnostics.Process.GetCurrentProcess()运行应用程序的进程来确定您是否在IIS中运行,并查看它是否是“w3svc.exe”,这是IIS应用程序池运行的内容如

答案 1 :(得分:0)

如果我理解你的问题,而我可能没有,你想知道服务器上是否部署了实际的实例。

如果是这种情况,您可以使用以下内容:

 (string)AppDomain.CurrentDomain.GetData("APPBASE") 

或者我相信这也会奏效:

  AppDomain.CurrentDomain.BaseDirectory;

在程序集或进程本身上使用反射将不起作用,因为正在运行的进程是主机(IIS,IISExpress等),但我指定的两个方法应该为您提供托管应用程序的服务本身位置。