【问题标题】:WCF on IIS8; *.svc handler mapping doesn't workIIS8 上的 WCF; *.svc 处理程序映射不起作用
【发布时间】:2023-04-06 08:29:01
【问题描述】:

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

在安装 Web 角色时,不会像在 Windows Server 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.

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

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

【问题讨论】:

    标签: asp.net wcf iis-8 iis-8.5


    【解决方案1】:

    更具体地说:

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

    【讨论】:

    • 这个在我的情况下不起作用,因为我使用的是 Windows 8(使用 IIS 8)。
    • 如果您首先从 v3.0 目录运行 ServiceModelReg.exe –i,您还需要运行 ServiceModelReg.exe –ua 将其撤消,然后才能正常工作。
    • 从命令行:dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation /All
    • gyorgybalassy.wordpress.com/2012/09/24/… 是怎么回事?哪个更好?
    • 我盯着“服务器角色”页面看了一个小时。我不知道您可以单击“下一步”或单击左侧的“功能”。 o_O +1
    【解决方案2】:

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

    【讨论】:

    • 这是您在没有服务器管理器的 Windows 8 上需要做的事情
    • 这是在 Windows 8 和 Windows 8.1 中托管 WCF 服务时的答案
    • http 激活。是否不管您是否使用http / https?因此,这是两者的摘要名称还是仍然需要区分?
    • 我在 IIS 10 上遇到过类似的问题,Http Activation 默认是关闭的。启用它可以立即解决问题。谢谢!
    • 适用于 Windows 10、IIS 10
    【解决方案3】:

    在“打开或关闭 Windows 功能”中打开以下选项

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

    b) 都在 WCF 服务下

    【讨论】:

    • 我只需要打开 .Net Framework 3.5 - WCF HTTP 激活
    【解决方案4】:

    带有 IIS8 的 Windows 8

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

    【讨论】:

    • 是否有任何 powershell 脚本以编程方式进行?
    • 我们只有一台服务器,所以我从不使用高级 Powershell
    【解决方案5】:

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

    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
    

    【讨论】:

    • 感谢dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45 对我来说已经足够了......
    • 这是在新的 2012R2+ 版本的 Windows Server 上解决此问题的最佳方法。可能在 2012 年也可以使用,但谢天谢地,我没有这些可以尝试了。
    • 并使用 PowerShell script ?
    • @Kiquenet 这些命令都可以在 powershell 中运行。如果您尝试直接复制 Shubh 的命令,则需要在第二个 dism 命令之前的第一个命令之后添加换行符或分号。
    【解决方案6】:

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

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

    似乎是安装顺序造成的。

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

    【讨论】:

    • 我这样做了,似乎已经杀死了我的服务器。我只在iis下卸载了asp.net的东西,但是现在当我远程进入时,我得到一个黑屏和一个命令提示符窗口,就像服务器现在只是“服务器核心”一样...... :(
    • @MGOwen 当您删除 .net 4.5 的某些功能时,它看起来也删除了服务器图形外壳,可以使用一些命令再次添加。
    【解决方案7】:

    对于 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 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. 重启应用程序池。

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

    【讨论】:

    【解决方案8】:

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

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

    【讨论】:

      【解决方案9】:

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

      Add-WindowsFeature 'NET-HTTP-Activation'
      

      【讨论】:

        【解决方案10】:

        在 Windows 10(客户端)上,您还可以使用脚本编写此代码

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

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

        【讨论】:

          【解决方案11】:

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

          【讨论】:

            【解决方案12】:

            这对我来说真的很愚蠢。在此处添加此内容,因为它是 svc 404 问题上更受欢迎的主题之一。

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

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

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

            DOH!

            我刚刚从我的 WCF 测试客户端粘贴了地址,但没有充分检查它。这在后台所做的是在 .svc 地址上创建一个 IIS 应用程序,而我从 IIS 中什么也得不到。我想不通我怎么连 .svc 文件都打不开。

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

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

            【讨论】:

              猜你喜欢
              • 2012-05-29
              • 2012-03-23
              • 1970-01-01
              • 1970-01-01
              • 2014-10-23
              • 1970-01-01
              • 1970-01-01
              • 2013-02-15
              • 2013-05-23
              相关资源
              最近更新 更多