IIS8上的WCF;* .svc处理程序映射不起作用


272

我正在尝试在2012年内部版本8400的IIS8中运行wcf服务。

在安装Web角色时,找不到像2008年那样的wcf东西(低于3.51)。

安装时,缺少svc处理程序映射,所以我做了一个:

%windir%\Microsoft.NET\Framework\v3.0\WindowsCommunication Foundation\ServiceModelReg.exe i

现在有处理程序映射,但是我仍然得到:

The resource you are looking for does not have a handler associated with it.

(我删除了静态文件处理程序。)

该站点正在使用经典管道以使用模拟。

Answers:


553

进一步来说:

  1. 运行Server Manager(在任务栏和开始菜单上)
  2. 选择要管理的服务器(可能是本地服务器)
  3. 向下滚动到“ Roles and Features”部分。
  4. Add Role or Feature从“任务”下拉菜单中选择“ ”
  5. 在“ Add Role or Feature Wizard”对话框上,单击Features左侧页面列表中的“ ”。
  6. 展开".Net 3.5"".Net 4.5",具体取决于您所安装的内容。(如果没有,您可以返回到“ roles”屏幕进行添加。
  7. 在“ WCF Services”下,选中“ HTTP-Activation” 框。如果您知道需要使用非HTTP类型(TCP,命名管道等),也可以添加它们。
  8. 单击"Install"按钮。

6
在我的情况下,此选项不起作用,因为我使用的是Windows 8(带有IIS 8)。
Josh Mouch 2012年

9
如果您首先从v3.0目录运行ServiceModelReg.exe –i,则还需要运行ServiceModelReg.exe –ua来撤消它,然后才能起作用。
斯科特·安德森

14
从命令行:dism / Online / Enable-Feature / FeatureName:WCF-HTTP-Activation / All
Richard

4
gyorgybalassy.wordpress.com/2012/09/24/…是什么?哪个更好的方法?
Kiquenet 2013年

9
我实际上是盯着“服务器角色”页面一个小时。我不知道您可以单击“下一步”,也可以单击左侧的“功能”。o_O +1
丹·贝查德

219

我不得不启用HTTP Activation.NET Framework 4.5 Advanced Services>WCF Services

启用HTTP激活


10
对于没有服务器管理器的Windows 8,这是您需要做的
Simon_Weaver

2
当您在Windows 8和Windows 8.1中托管WCF服务时,这就是答案
vcRobe 2015年

http激活。是否使用http / https?因此,这是两者的摘要名称还是还是需要区别的?
托马斯

2
我在IIS 10上遇到了类似的问题,默认情况下Http激活处于关闭状态。启用它可以立即解决此问题。谢谢!
dhruvpatel 2015年

4
适用于Windows 10,IIS 10
watbywbarif

45

打开以下“打开或关闭Windows功能”

a).Net Framework 3.5-WCF HTTP激活和非HTTP激活

b)所有在WCF服务下


1
我只需要打开.Net Framework 3.5-WCF HTTP激活
daveywc 2014年

40

Windows 8和IIS8

  • 击中 Windows+X
  • 选择Programs and Features(列表中的第一项)
  • Turn Windows Features on or off在左侧选择
  • 扩大 .NET Framework 4.5 Advanced Services
  • 扩大 WCF Services
  • 启用 HTTP Activation

任何以编程方式执行的powershell脚本?
Kiquenet

我们只有一台服务器,所以我永远都不会使用高级Powershell
Simon_Weaver 2013年

28

我现在更喜欢通过脚本执行此操作

REM install the needed Windows IIS features for WCF
dism /Online /Enable-Feature /FeatureName:WAS-WindowsActivationService
dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel
dism /Online /Enable-Feature /FeatureName:WAS-NetFxEnvironment
dism /Online /Enable-Feature /FeatureName:WAS-ConfigurationAPI
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

REM Feature Install Complete
pause

2
感谢dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45已经足够我
Shubh 2015年

这是在Windows Server 2012R2 +新版本上修复此问题的最佳方法。大概也可以在2012年使用,但值得庆幸的是,我没有更多可以尝试的产品了。
Paul Sturm

并使用PowerShell 脚本
Kiquenet '18

@Kiquenet这些命令都将在Powershell中运行。如果您试图直接复制Shubh的命令,则需要在第一个命令之后的第二个dism命令之前添加换行符或分号。
KB4000

10

我们设法通过以下方法解决Windows Server 2012下的错误:

  1. 从“删除角色和功能向导”中删除.NET Framework 4.5功能/ASP.NET 4.5及其所有从属功能
  2. 重新安装已删除的功能。

似乎是安装顺序造成的。

另外,请确保在WCF服务下安装了HTTP激活。


我这样做了,似乎已经杀死了我的服务器。我只在iis下卸载了asp.net东西,但是现在当我进入远程系统时,我得到了黑屏和命令提示符窗口,就像服务器现在只是“服务器核心” ... :(
MGOwen 2014年

@MGOwen删除.net 4.5的某些功能时,它似乎还删除了服务器图形外壳,可以使用一些命令再次添加。
约翰

3

对于Windows 8计算机,没有“服务器管理器”应用程序(至少我找不到它)。

虽然我能够解决问题。我不确定我按以下顺序执行了以下操作,但是以下一项/几项操作似乎有帮助:

  1. 在“打开或关闭Windows功能”上打开以下选项:a).Net Framework 3.5-WCF HTTP激活和非Http激活b)全部在WCF服务下(如对此问题的答案之一所指定)

  2. 在“%windir%\ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \”文件夹中执行“ ServiceModelReg.exe –i”

  3. 通过两个命令(在文件夹C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727中)注册了ASP.NET 2.0:

    aspnet_regiis -ga“ NT AUTHORITY \ NETWORK SERVICE” aspnet_regiis -iru

  4. 重新启动PC ...由于操作## 3和4的结果,我的ASP.NET配置出现问题

  5. 重复动作#2

  6. 从“程序和功能”中安装其他两个选项:.Net Framework 4.5高级服务。我检查了两个子选项:ASP.NET 4.5和WCF服务

  7. 重新启动应用程序池。

序列有点疯狂,但这对我有所帮助,可能会对其他人有所帮助


关键是打开HTTP激活。
Umar Farooq Khawaja



2

使用PowerShell,您可以通过以下方式安装所需的功能:

Add-WindowsFeature 'NET-HTTP-Activation'

1

在Windows 10(客户端)上,您也可以使用以下脚本

Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName WCF-HTTP-Activation45 -All

请注意,这是与服务器skus不同的命令


0

.NET框架的HTTP激活功能也需要Windows进程激活功能


0

对我来说,这真是一个愚蠢的行为。在这里添加它是因为它是svc 404问题上比较流行的线程之一。

我在项目设置的\ Web \项目URL中粘贴了:

http://blah.webservice.local.blahblah.com/Blah.svc

由于某种未知的原因(已经执行了1000次),并没有立即发现.svc文件的名称位于结尾。

DOH!

我刚刚从WCF测试客户端粘贴了地址,但没有对其进行足够的检查。在后台执行的操作是在.svc地址上创建IIS应用程序,而我从IIS中什么也没得到。我想不出我怎么也无法打.svc文件。

很明显,简单的修复方法是删除IIS中的应用程序并更改项目URL。

在此工作近20年之后,您仍然可以犯小学生错误/菜鸟错误。希望这对某人有帮助。

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.