WCF服务文件不可见

时间:2014-04-03 00:27:44

标签: c# wcf iis

我们有一个包含多个svc文件的现有WCF服务。

今天,突然间,其中一个svc文件不再有效:

  • 该页面在IIS内容视图中不可见(尽管其他svc文件 是)
  • 导航到该页面时,返回404错误
  • 该文件存在且在Visual Studio
  • 中的解决方案资源管理器中可见
  • 在不同的开发机器上一切正常

我们尝试解决此问题时尝试了以下方法:

  • 已成功创建并导航到其他svc文件 - 这使我们相信IIS配置正确。
  • 删除并重新添加相关网页。没用。
  • 重启机器
  • 重新启动IIS

关于可能导致这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

问题出在IIS的applicationHost.config文件中:C:\Windows\System32\inetsrv\config

根据MSDN

  

ApplicationHost.config是配置系统的根文件   当您使用IIS 7及更高版本时。它包括所有的定义   站点,应用程序,虚拟目录和应用程序池,如   以及Web服务器设置的全局默认值(类似于   machine.config和.NET Framework设置的根web.config。)

因此,一旦我们打开文件(您的普通xml配置文件),我们注意到应用程序的路径直接指向svc文件,而不是指向文件夹位置。像这样:

<application path="/[APP NAME]" applicationPool="ASP.NET V4.0 Integrated">
  <virtualDirectory path="/" physicalPath="C:\Projects\[FOLDER PATH]\[APP NAME]\Service.svc" />
</application>

请注意physicalPath属性(具体为Service.svc):

path="/" physicalPath="C:\Projects\[FOLDER PATH]\[APP NAME]\Service.svc"

这就是导致问题的原因。

所以我们所要做的就是从路径中删除服务的名称,一切正常。像这样:

<application path="/[APP NAME]" applicationPool="ASP.NET V4.0 Integrated">
  <virtualDirectory path="/" physicalPath="C:\Projects\[FOLDER PATH]\[APP NAME]" />
</application>