IIS8上的WCF;*。SVC处理器映射不工作

我正在尝试在Windows Server 2012 build 8400上的IIS8上运行WCF服务。

在安装web角色时,WCF的东西(在3.51之下)没有像Windows Server 2008那样被发现。

当安装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.

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

为了使用模拟,该站点正在使用经典的管道。

222920 次浏览

打开下面的“打开或关闭Windows功能”

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

b)全部在WCF服务项下

更具体地说:

  1. 运行Server Manager(在任务栏和开始菜单上)
  2. 选择要管理的服务器(可能是本地服务器)
  3. 向下滚动到“Roles and Features”部分。
  4. 从Tasks下拉菜单中选择“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"按钮。

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

不过我还是解决了这个问题。我不确定我在哪个顺序做了以下操作,但看起来以下操作中的一个/几个有帮助:

  1. a) .Net Framework 3.5 - WCF HTTP激活和非HTTP激活b)所有在WCF服务下(在这个问题的一个答案中指定)

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

  3. < p >注册ASP。通过两个命令(在文件夹C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727):

    aspnet_regiis -ga "NT AUTHORITY\NETWORK SERVICE" 李aspnet_regiis电位< / p > < / >

  4. 重新启动电脑…它看起来像作为行动## 3和4的结果,我的ASP被打破了。网络配置

  5. 重复动作#2

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

  7. 重新启动应用池。

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

我必须在.NET Framework 4.5 Advanced Services > WCF Services中启用HTTP Activation

启用HTTP激活

我们设法解决了Windows Server 2012下的错误:

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

原因似乎是安装的顺序。

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

在Windows 8或Windows Server 2012上配置iis8时,安装顺序非常重要。

我在配置iis8时遇到了很多问题,但最终这些链接帮助了我

Windows 8和IIS8

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

现在我更喜欢通过脚本来实现这一点

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

使用PowerShell,您可以安装所需的功能:

Add-WindowsFeature 'NET-HTTP-Activation'
它是.NET框架的HTTP激活特性 Windows进程激活特性也需要

在windows 10(客户端)上,你也可以使用脚本

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

注意,这是一个不同于服务器skus的命令

这对我来说真的很傻。在这里添加这个,因为它是svc 404问题上更受欢迎的线程之一。

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

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

由于一些未知的原因(已经这样做了1000次)没有立即发现.svc文件的名称在最后。

哎!

我刚刚从WCF测试客户端粘贴了这个地址,没有充分地检查它。这在后台所做的是在.svc地址创建一个IIS应用程序,我没有从IIS中得到任何东西。我不知道我怎么连。svc文件都打不到。

简单的修复,显然,只是在IIS中删除应用程序并更改项目URL。

在这一行干了将近20年之后,你仍然会犯小学生或新手犯的错误。希望这能帮助到一些人。