1

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

在我的开发机器上,我可以像这样加载配置:

WebConfigurationManager.OpenMappedWebConfiguration(webMappedFile, virtualPath);

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

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

因此,我尝试对其进行硬编码,并且成功了。无论如何这是不可接受的,所以我需要动态地向 WebConfigurationManager 提供站点,因为我不知道该服务将来会在哪个站点上运行。有人知道如何实现吗?

谢谢。

4

2 回答 2

0

如果您将此代码作为处理请求的一部分运行,您可以使用:

Request.ServerVariables("server_name")

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

根据您的评论进行编辑

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

然后你有两个选择:

  • 从具有 httpconext 的层发送名称作为参数
  • 不确定这是否可行:但您可以尝试在项目中添加对 system.web 的引用。它可以编译,但是当你运行它时你可能会得到一个空引用异常。大概值得一试。
于 2010-09-09T07:49:27.293 回答
0

怎么样Server.MachineName

于 2010-09-09T08:34:09.913 回答