在IIS上托管时找不到WCF文件

本文关键字:找不到 WCF 文件 IIS | 更新日期: 2023-09-27 18:06:10

我的WCF服务中有几个XML文件,它们被映射为

''servermain'D$'apps'dataservice'bin'Type'FileName.xml
''servermain'D$'apps'dataservice'bin'Type'Config'ConfigFile.xml
我在程序中使用 来引用这些文件
.''Type''FileName.xml
.''Type''Config''ConfigFile.xml

当我通过控制台作为服务运行我的应用程序时,它工作完全正常…当我将它部署到IIS服务器时,我得到一个错误说文件找不到…

这是我的结果中的一小段文本(我的WCF服务输出JSON)

"Message":"IO Exception C:''Windows''SysWOW64''inetsrv","Detail":"File does not exist: .''Type''Config''ConfigFile.xml"

我使用System.Environment.CurrentDirectory来获取当前目录。

我如何配置它,使我的应用程序路径实际上是

''servermain'D$'apps'dataservice'bin'

我希望我不需要硬编码文件的实际路径,因为开发人员也会通过他们的本地机器运行这个服务。

在IIS上托管时找不到WCF文件

我希望我不需要硬编码文件的实际路径,因为开发人员也会通过他们的本地机器运行这个服务。

那就是你现在正在做的。解决这种硬编码路径的可能方法非常简单:每个WCF服务都有一个配置文件。您可以轻松地将appSettings元素添加到配置中,并为任何其他文件指定绝对或相对路径。

。用于执行控制台:

<appSettings>
    <add key="ConfigFile" value=".''Type''Config''ConfigFile.xml" />
</appSettings>

而不是IIS托管配置:

<appSettings>
    <add key="ConfigFile" value="''servermain'D$'apps'dataservice'bin'Type'Config'ConfigFile.xml" />
</appSettings>

您可以通过System.Configuration.ConfigurationSettings类访问这些值。

更新:System.Configuration.ConfigurationSettings被标记为过时的。应选用System.Configuration.ConfigurationManagerSystem.Configuration.WebConfigurationManager