在 IIS 中访问. svc 文件时使用 HTTP404

我最近创建了一个 WCF 服务,当从 VisualStudio2008进行测试时,它工作得很好。但是当我将项目部署到 IIS 并尝试访问。来自 IIS 的 svc 文件,我得到这个错误:

"Server Error in '/' Application.The resource cannot be found.  "

过去四天我一直有这个问题。

在 IIS 管理器的处理程序映射中,我可以看到. svc 的两个条目:

svc-Integrated and svc-ISAPI-2.0
133434 次浏览

You need to add a mapping for the SVC extension to ASP.NET. The easiest way to do this is to run ServiceModelReg.exe -i from C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation. You may also need to enable ASP.NET if you haven't already done so.


If you are using Windows Server 2012 or 2016, follow these instructions instead:

Verifies that you directory has been converted into an Application is your IIS.

I see you've already solved your problem - but for posterity:

We had a similar problem, and the SVC handler was already correctly installed. Our problem was the ExtensionlessUrl handler processing requests before they reached the SVC handler.

To check this - in Handler Mappings in IIS Manager at the web server level, view the list of handlers in order (it's an option on the right-hand side). If the various ExtensionlessUrl handlers appear above the SVC handlers, then repeatedly move them down until they're at the bottom.

I've had the same problem today.

For me, the solution was to go into IIS, right-click on the new Web Site name, select Properties, ASP.Net, and change the ASP.Net version from "1.1.4322" (which it had set as the default) to 2.0.50727.

Once I'd done that, I could right-click on the .svc file, click on "Browse" and see the friendly Service webpage.

I found these instructions on a blog post that indicated this step, which worked for me (Windows 8, 64-bit):

Make sure that in windows features, you have both WCF options under .Net framework are ticked. So go to Control Panel –> Programs and Features –> Turn Windows Features ON/Off –> Features –> Add Features –> .NET Framework X.X Features. Make sure that .Net framework says it is installed, and make sure that the WCF Activation node underneath it is selected (checkbox ticked) and both options under WCF Activation are also checked.
These are:
* HTTP Activation
* Non-HTTP Activation
Both options need to be selected (checked box ticked).

In my case, the error was caused by incorrect mapping settings in the file applicationhost.config (\System32\inetsrv\config). For some reason, Visual Studio 2013 corrupted it while creating a virtual directory in IIS. The fix was to manually edit the sites section in the file.

What worked for me, On Windows 2012 Server R2:

WCF HTTP 404

Thanks goes to "Aaron D"

There are 2 .net framework version are given under the features in add role/ features in server 2012

a. 3.5

b. 4.5

Depending up on used framework you can enable HTTP-Activation under WCF services. :)

In my case Win 10. the file applicationHost.config is corrupted by VS 2012. And you can get the copy the history of this file under C:\inetpub\history. Then restart IIS and it works properly.

This can also become an issue after enabling IIS 6 Management Compatibility in windows 10. Setting the framework HTTP Activation under WCF Services will fix the problem.

I had to add the extension .svc to the allowed extensions in the request filtering settings (got 404.7 errors before).

enter image description here

Adding the .svc suffix as allowed in request filtering did the trick for me.

None of the above solutions resolved this error for me. I had to set the following in web.config:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
<transport clientCredentialType="None" />
</security>

I would like to take this opportunity to CURSE Microsoft once again for creating such a huge mess with the .NET Framework and making developer lives so miserable for so long!