如何检索Web应用程序当前在哪个站点上运行?

时间:2010-09-09 07:27:40

标签: c# wcf web-config appfabric webconfigurationmanager

我目前正在AppFabric服务器上运行WCF服务,我的应用程序需要动态加载web.config文件以检索自定义配置部分。

在我的开发机器上,我可以加载如下配置:

WebConfigurationManager.OpenMappedWebConfiguration(webMappedFile, virtualPath);

但是在测试机器(AppFabric服务器)上我得到一个异常,似乎我需要指定第三个参数,它实际上是运行Web应用程序的站点:

WebConfigurationManager.OpenMappedWebConfiguration(webMappedFile, virtualPath, "MySite");

所以我试着对它进行硬编码并且有效。无论如何这是不可接受的,所以我需要动态地将站点提供给WebConfigurationManager,因为我不知道将来该服务将在哪个站点上运行。有谁知道如何实现这个目标?

感谢。

2 个答案:

答案 0 :(得分:0)

如果您在处理请求时运行此代码,则可以使用:

Request.ServerVariables("server_name")

请参阅:http://msdn.microsoft.com/en-us/library/ms525396(VS.90).aspx

根据您的评论进行修改

您需要的参数是站点名称,而不是计算机名称,您的代码在许多计算机上运行。如果代码在不再知道它在网站上的某个地方运行,那么它很难获得它正在运行的网站的名称。

您有两个选择:

  • 从具有httpconext
  • 的图层中将名称作为参数发送
  • 不确定这是否有效:但您可以尝试向系统添加对system.web的引用。它可以编译,但是在运行它时可能会得到一个空引用异常。可能值得一试。

答案 1 :(得分:0)

Server.MachineName

怎么样?