繁体   English   中英

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

[英]WCF on IIS8; *.svc handler mapping doesn't work

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

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

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

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

进一步来说:

  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"按钮。

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

启用 HTTP 激活

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

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

b) 全部在 WCF 服务下

带有 IIS8 的 Windows 8

  • 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

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

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

似乎安装顺序是原因。

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

对于 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. 通过两个命令注册 ASP.NET 2.0(在文件夹 C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727 中):

    aspnet_regiis -ga "NT 权限\\网络服务" aspnet_regiis -iru

  4. 重新启动 PC... 看起来是因为操作 ## 3 和 4 在我的 ASP.NET 配置中出现了问题

  5. 重复动作#2

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

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

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

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

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

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

Add-WindowsFeature 'NET-HTTP-Activation'

在 Windows 10(客户端)上,您还可以使用

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

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

它是 .NET 框架的 HTTP 激活功能 Windows 进程激活功能也是必需的

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

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

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

并且出于某种未知的原因(已经这样做了一千次)并没有立即发现 .svc 文件的名称在末尾。

哦!

我刚刚从我的 WCF 测试客户端粘贴了地址并且没有充分检查它。 这在后台所做的是在 .svc 地址创建一个 IIS 应用程序,但我没有从 IIS 中得到任何信息。 我无法弄清楚我什至无法点击 .svc 文件。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM