[英]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.
(我删除了静态文件处理程序。)
该站点正在使用经典管道以使用模拟。
进一步来说:
Server Manager
(在任务栏和开始菜单上)Roles and Features
”部分。Add Role or Feature
”Add Role or Feature Wizard
”对话框中,单击左侧页面列表中的“ Features
”。".Net 3.5"
或".Net 4.5"
,具体取决于您安装的内容。 (如果你没有,你可以回到“ roles
”屏幕添加。WCF Services
”下,选中“ HTTP-Activation
”框。 如果您知道需要它们,也可以添加非 http 类型(tcp、命名管道等)。"Install"
按钮。我必须在.NET Framework 4.5 Advanced Services
> WCF Services
启用HTTP Activation
打开以下“打开或关闭 Windows 功能”
a) .Net Framework 3.5 - WCF HTTP 激活和非 Http 激活
b) 全部在 WCF 服务下
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 下的错误:
似乎安装顺序是原因。
此外,请确保您在 WCF 服务下安装了 HTTP 激活。
对于 Windows 8 机器,没有“服务器管理器”应用程序(至少我找不到它)。
虽然我能够解决这个问题。 我不确定我以哪个顺序执行以下操作,但看起来以下操作中的一个/几个有帮助:
打开以下“打开或关闭 Windows 功能”a) .Net Framework 3.5 - WCF HTTP 激活和非 Http 激活 b) 全部在 WCF 服务下(如该问题的一个答案中所指定)
在“%windir%\\Microsoft.NET\\Framework\\v3.0\\Windows Communication Foundation\\”文件夹中执行“ServiceModelReg.exe –i”
通过两个命令注册 ASP.NET 2.0(在文件夹 C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727 中):
aspnet_regiis -ga "NT 权限\\网络服务" aspnet_regiis -iru
重新启动 PC... 看起来是因为操作 ## 3 和 4 在我的 ASP.NET 配置中出现了问题
重复动作#2
从“程序和功能”安装另外两个选项:.Net Framework 4.5 高级服务。 我检查了两个子选项:ASP.NET 4.5 和 WCF 服务
重新启动应用程序池。
序列有点疯狂,但这对我有帮助,可能对其他人也有帮助
使用 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.