0

我在类库中创建了一些 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>
4

1 回答 1

0

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

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

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

像这样的东西:

<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>

于 2013-05-03T03:35:21.393 回答