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

时间:2014-06-02 14:27:04

标签: c# wcf iis file-io filesystems

我的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\

我更愿意,如果我不必硬编码文件的实际路径,因为开发人员也会通过本地计算机运行此服务。

1 个答案:

答案 0 :(得分:0)

  

我更愿意,如果我不必硬编码文件的实际路径,因为开发人员也会通过本地计算机运行此服务。

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

E.g。执行控制台:

<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