【问题标题】:WCF File Not Found when hosted on IIS在 IIS 上托管时未找到 WCF 文件
【发布时间】:2014-06-02 14:27:04
【问题描述】:

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

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

【问题讨论】:

    标签: c# wcf iis file-io filesystems


    【解决方案1】:

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

    这就是你现在正在做的事情。解决此硬编码路径的一种可能方法非常简单: 每个 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多