C# WCF服务文件不可见

C# WCF服务文件不可见,c#,wcf,iis,C#,Wcf,Iis,我们有一个包含多个svc文件的现有WCF服务 今天,突然之间,其中一个svc文件不再工作: 该页面在IIS内容视图中不可见(尽管其他svc文件 是) 导航到页面时,返回404错误 该文件已存在,并且在Visual Studio的解决方案资源管理器中可见 在不同的开发机器上,一切都正常工作 为解决该问题,我们尝试了以下方法: 已成功创建并导航到其他svc文件-这使我们相信IIS配置是正确的 删除并重新添加有问题的页面。不起作用 重新启动机器 重新启动IIS 你知道是什么导致了这种情况吗?问

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

今天,突然之间,其中一个svc文件不再工作:

  • 该页面在IIS内容视图中不可见(尽管其他svc文件 是)
  • 导航到页面时,返回404错误
  • 该文件已存在,并且在Visual Studio的解决方案资源管理器中可见
  • 在不同的开发机器上,一切都正常工作
为解决该问题,我们尝试了以下方法:

  • 已成功创建并导航到其他svc文件-这使我们相信IIS配置是正确的
  • 删除并重新添加有问题的页面。不起作用
  • 重新启动机器
  • 重新启动IIS

你知道是什么导致了这种情况吗?

问题出在IIS的
applicationHost.config
文件中,文件位于这里:
C:\Windows\System32\inetsrv\config

根据:

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

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

<application path="/[APP NAME]" applicationPool="ASP.NET V4.0 Integrated">
  <virtualDirectory path="/" physicalPath="C:\Projects\[FOLDER PATH]\[APP NAME]\Service.svc" />
</application>
<application path="/[APP NAME]" applicationPool="ASP.NET V4.0 Integrated">
  <virtualDirectory path="/" physicalPath="C:\Projects\[FOLDER PATH]\[APP NAME]" />
</application>
这就是造成问题的原因

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

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