在 visual studio 中调试时 WCF 不工作但在 IE 中工作

WCF not working when debugging in visual studio but works in IE

我有一个托管在 ASP.NET 应用程序中的 WCF。突然,当我在 visual studio 2010 年调试 WCF 服务时它停止工作。当我尝试访问该服务时,它抛出以下异常。

CommunicationException was unhandled by user code. The remote server returned an error: NotFound

我启用了 WCF 跟踪,但没有记录任何错误。

奇怪的是,如果我将代码部署到我的 QA 服务器并访问应用程序,服务工作正常,所以代码看起来不是问题。

如果我也成功地获得了当前 运行 在生产环境中的源代码并尝试在我的开发环境中调试它,它会失败并出现与我上面提到的相同的错误。

有人知道我的开发环境中可能会出现什么问题吗?我已经尝试了 IE、Firefox 和 Chrome,结果是一样的。

经过很长时间的调试,包括删除 Bin 和 obj 文件夹以及大量重建,我终于让这个 WCF 服务再次工作。

首先,我怀疑该服务可能以某种方式被破坏,因此我尝试更新我的 silverlight 应用程序中的服务引用,但遇到了以下错误。

There was an error downloading 'http://localhost/mySite/Webservice/GetData.svc'. The request failed with HTTP status 404: Not Found. Metadata contains a reference that cannot be resolved: 'http://localhost/mySite/Webservice/GetData.svc'. The remote server returned an unexpected response: (405) Method Not Allowed. The remote server returned an error: (405) Method Not Allowed.

然后我浏览到物理文件夹路径以确认我的 .svc 文件是否真的在那里,确实如预期的那样,文件在那里。

尝试在我的浏览器中浏览到路径 http://localhost/mySite/Webservice/GetData.svc 时遇到了下面的另一个错误。

HTTP Error 404.7 - Not Found The request filtering module is configured to deny the file extension.

Most likely causes: Request filtering is configured for the Web server and the file extension for this request is explicitly denied.

这让我突然想到,IIS 7.0 决定阻止访问我的 .svc 文件。 然后我将 fileExtension=".svc" mimeType="application/octet-stream" 添加到 IIS,重新启动 IIS 但得到了同样的错误。

然后我读了一些我不记得在位于 C:\Windows\System32\inetsrv\Config 的文件 applicationHost.config 中的 <requestFiltering> 标记下添加 <add fileExtension=".svc" allowed="true" /> 的博客,仍然没有任何改变。尝试在同一个文件中的 serverSideInclude 下添加 <mimeMap fileExtension=".svc" mimeType="application/octet-stream" />,同样没有成功。

试过这个 http://www.adamwlewis.com/articles/iis-7-not-serving-files-4047-error 仍然没有运气。

我认为以下 2 个步骤解决了问题。

  1. 我通过 运行 ServiceModelReg.exe -i 从 C:\Windows\Microsoft.NET\Framework\v3.[=54 添加了 SVC 扩展到 ASP.NET 的映射=] 传播基础

在浏览器中浏览到我的 .svc 文件,这一次我似乎取得了一些进展,但仍然还有一个错误需要克服。在下面。

Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

  1. 我通过使用 ASP.NET IIS 注册工具 (aspnet_regiis.exe) 注册正确版本的 ASP.NET 解决了上述错误,如下 link 中所述

https://msdn.microsoft.com/en-us/library/hh169179(v=nav.70).aspx

至此我的服务恢复正常。我仍然没有弄清楚是什么搞砸了我的开发机器。