【问题标题】:WCF services couldn't read configuration fileWCF 服务无法读取配置文件
【发布时间】:2013-05-03 00:24:36
【问题描述】:

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

【问题讨论】:

    标签: wcf iis


    【解决方案1】:

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

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

    但是,我会使用配置文件的 &lt;appSettings&gt; 部分(在 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 中,这都可以工作。

    如果出于某种原因您不想(或不能)使用标准 &lt;appSettings&gt; 部分,请使用 &lt;children&gt; 部分周围的上下文以及您尝试访问它的方式来更新您的问题我们可以提供更好的指导。

    【讨论】:

    • 实际上我使用了一个对象工厂库,需要在子部分进行配置。当我调用此方法时会出现此错误:IConfiguration config = new WebConfigurationPersistenceManagerFactory()。 CreatePersistenceManager().GetConfigurationProvider().GetConfiguration(configName);
    • @ManS - 这是你写的东西还是其他开发者/供应商?你有它的文件吗?如果对这个对象工厂库一无所知,这里的任何人都很难为您提供帮助。你真的应该用这些信息更新你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多