WCF服务无法读取配置文件

时间:2013-05-03 00:24:37

标签: wcf iis

我在类库中创建了一些WCF服务。 这些服务需要一些配置值才能正常工作。所以我在IIS上部署服务后将这些配置添加到web.config文件中。 问题是当我尝试使用这些服务时,我在阅读配置时遇到以下异常:

  

System.ArgumentException:当不在独立的exe内部运行时,必须指定exePath。

知道当我测试服务时,它在IIS上托管之前工作正常。

现在的问题是如何更改以使dll服务能够配置。

这是web.config文件的一部分。

    <children>
  <child name="service_config">
    <properties>
      <property name="connection_name" value="Photo" valueType="System.String" />
      <property name="data_access_interface" value="data_access" valueType="System.String" />
      <property name="is_client_db" value="false" valueType="System.String" />
      <property name="exchange_service" value="exchange_service_key" valueType="System.String" />
      <property name="max_file_size" value="1000" valueType="System.String" />
      <property name="email_sender" value="test@gmail.com" valueType="System.String" />
      <property name="email_body_template_name" value="test_files/Template.txt" valueType="System.String" />
      <property name="tablet_photo_size_height" value="100" valueType="System.String" />
      <property name="tablet_photo_size_width" value="90" valueType="System.String" />
      <property name="phone_photo_size_height" value="200" valueType="System.String" />
      <property name="phone_photo_size_width" value="180" valueType="System.String" />
      <property name="phone_photo_optimized_size_height" value="80" valueType="System.String" />
      <property name="phone_photo_optimized_size_width" value="60" valueType="System.String" />
      <property name="web_photo_size_height" value="127" valueType="System.String" />
      <property name="web_photo_size_width" value="170" valueType="System.String" />
      <property name="email_client_key" value="email_client_key" valueType="System.String" />
    </properties>

1 个答案:

答案 0 :(得分:0)

目前还不完全清楚你要做什么,但听起来你正在使用ConfigurationManager.OpenExeConfiguration来读取配置文件的指定部分。您收到的错误消息为您提供了一个很好的起点,可以找出问题所在 - 可能与IIS没有路径指向exe。

您没有显示用于访问配置文件的代码,并且您发布的配置没有很多上下文,因此很难告诉您该怎么做。

但是,我会使用配置文件的<appSettings>部分(在app.config和web.config文件中都可用)来存储这些属性,然后您可以检索它们ConfigurationManager.AppSetting[keyName]。< / p>

这样的事情:

<appSettings>
  <add key="connection_name" value="Photo" />
  <add key="data_access_interface" value=data_access" />
  <!-- plus the rest of your values -->
</appSettings>

然后你只需要使用类似的东西:

string connectionName = ConfigurationManager.AppSettings["connection_name"];
string dataAccesInterface = ConfigurationManager.AppSettings["data_access_interface"];

无论您是将其作为独立的exe运行还是在IIS中托管,都可以使用。

如果您不希望(或不能)使用标准<appSettings>部分,请使用<children>部分的上下文以及您尝试的方式更新您的问题访问它,以便我们提供更好的指导。