无法在Windows 8的IIS中提供WCF服务


198

当我尝试在Windows 8计算机上的IIS上提供WCF服务时,出现了众所周知的错误

由于扩展程序配置的原因,无法提供您请求的页面。如果页面是脚本,请添加处理程序。如果应下载文件,请添加一个MIME映射。

以前的解决方法是运行,aspnet_regiis -i但是Windows 8中似乎已经弃用了此命令,从而产生了响应This option is not supported on this version of the operating system. (...)

解决的办法是什么?

(我已经成功地启用了常规aspx页面,因此大多数IIS配置似乎正常。)


有关适用于aspnet_regiis -iWindows 8之前的用户的命令的更多信息,请参见以下链接:aspsnippets.com/Articles/…–
David

Answers:


404

似乎没什么头脑;WCF服务应Programs and Features -> Turn Windows features on or off在“控制面板”中启用。如这篇博客文章mdsn所述,转到.NET Framework Advanced Services -> WCF Services并启用。HTTP Activation

在命令提示符下(以管理员身份),您可以运行:

C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

如果出现错误,请使用以下内容

C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45

6
我花了一些时间在IIS管理器中。我认为IIS管理器应该带有一个图标,用于指导或告诉用户有关.NET Framework高级服务的信息。
Tony_Henrich

使用命令提示符,我收到错误消息“操作已完成,但未启用WCF-HTTP-Activation功能。可能未启用必需的父功能。您可以使用/ enable-feature / all选项自动启用每个父功能如果已启用父功能,请参考日志文件以进行进一步的诊断。” 我改用GUI方法来了解我正在打开什么并且它起作用。
本·亚当斯

5
我遇到了与Ben Anderson相同的“可能未启用必需的父功能”错误,并尝试了错误消息中的建议(添加了/all参数),然后工作正常:DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45
Troy Gizzi 2015年

1
先生,您真了不起。您还可以添加(这是一个很小的细节),具体取决于.Net Framework版本。就像.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18'2015-4-21

这可以节省生命。解决此问题的大多数联机解决方案仅使您在Web功能下启用.Net 3.5 Framework。那还不够。您还必须采取此处提到的步骤。
markaaronky

95

对于Windows Server 2012,该解决方案与faester的解决方案非常相似(请参见上文)。在服务器管理器中,单击Add roles and features,选择适当的服务器,然后选择Features。在下.NET Framework 4.5 Features,您将看到WCF Services,在此之下,您将找到HTTP Activation


这次真是万分感谢 !但是.Net 4呢?您认为启用此功能将对.Net v4.0一样吗?
2013年

2
在任何现有的Web应用程序中,添加Windows功能后,您还必须执行以下操作:-启动inetmgr-打开“处理程序映射”-检查扩展名* .svc的svc-ISAPI映射是否存在。如果不是,请使用“还原为父对象”操作从父网站复制它们。请注意,这假定在应用程序的web.config中配置了自定义处理程序映射,这在IIS7 +中通常是这种情况。否则,执行“还原为父对象”时将丢失这些内容。
Berend Engelbrecht 2014年

13

请在IIS 8.0上执行以下两个步骤

添加新的MIME类型和HttpHandler

  1. 扩展名:.svc,MIME类型:application / octet-stream

  2. 请求路径:*。svc,类型:System.ServiceModel.Activation.HttpHandler,名称:svc-Integrated


我的旧版Windows 7安装无法启用的最佳解决方案-.Net 3.5(Http和非Http激活)和WAS。无法精巧地重新安装操作系统
user919426

值得了解此方法,尤其是在创建和添加自己的处理程序时。但是,如果您使用“打开和关闭Windows功能”,则将获得大多数已知的文件扩展名,这将节省您分别添加每个文件的时间(并找出所有正确的细节)
Daniel Hollinrake


3

这实际上是与faester的解决方案和Bill Moon的解决方案相同的解决方案,但是使用PowerShell的方法如下:

Import-Module Servermanager
Add-WindowsFeature AS-HTTP-Activation

当然,也没有什么可以阻止您DISM从PowerShell 调用。


非常好。谢谢你的信息。
Rod Hartzell

-1

您可以将此代码添加到asp mvc中的web.config

   <system.webServer>
    <staticContent>
      <remove fileExtension=".srt" />
      <mimeMap fileExtension=".srt" mimeType="text/srt" />
      <remove fileExtension=".vtt" />
      <mimeMap fileExtension=".vtt" mimeType="text/vtt" />
    </staticContent>
  </system.webServer>

您可以使用文件扩展名更改文件扩展名


嗨,@ malik-您能否澄清映射文件扩展名如何使svc端点起作用?
faester

如果我理解正确,则可以根据需要更改扩展名。您可以从feedforall.com/mime-types.htm中查找,但您会说另一件事,对不起,我听不懂。
malik masis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.