我在类库中创建了一些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>
答案 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>
部分的上下文以及您尝试的方式更新您的问题访问它,以便我们提供更好的指导。