【问题标题】:HTTP 404 when accessing .svc file in IIS在 IIS 中访问 .svc 文件时出现 HTTP 404
【发布时间】:2011-02-06 06:03:51
【问题描述】:

我最近创建了一个 WCF 服务,在 Visual Studio 2008 测试时工作正常。但是当我将项目部署到 IIS 并尝试从 IIS 访问 .svc 文件时,我收到此错误:

"Server Error in '/' Application.The resource cannot be found.  "

过去 4 天我一直有这个问题。

在 IIS 管理器的处理程序映射中,我可以看到 .svc 的两个条目:

svc-Integrated and svc-ISAPI-2.0

【问题讨论】:

    标签: c# .net wcf


    【解决方案1】:

    什么对我有用,在 Windows 2012 Server R2 上:

    感谢“Aaron D”

    【讨论】:

    • 迄今为止最简单的选择。
    • 这在 Win10、Win8.1 桌面和 Win2012 服务器上对我有用 :) 谢谢!
    • 出于某种原因,我不得不为 3.5 和 4.5 安装该功能,并通过命令行:dism /online /enable-feature /featurename:WCF-http-Activation45 /alldism /online /enable-feature /featurename:WCF-http-Activation /all
    • 也适用于 Sever 2019
    • @Rocklan 给出的dism 命令运行良好!
    【解决方案2】:

    您需要为 SVC 扩展添加到 ASP.NET 的映射。最简单的方法是从 C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation 运行 ServiceModelReg.exe -i。如果您还没有启用 ASP.NET,您可能还需要启用。


    如果您使用的是 Windows Server 2012 或 2016,请按照以下说明操作:

    【讨论】:

    【解决方案3】:

    我发现these instructions on a blog post 表明了这个步骤,它对我有用(Windows 8、64 位):

    确保在 Windows 功能中,您已勾选 .Net 框架下的两个 WCF 选项。因此,请转到控制面板 -> 程序和功能 -> 打开/关闭 Windows 功能 -> 功能 -> 添加功能 -> .NET Framework X.X 功能。确保 .Net 框架说它已安装,并确保它下面的 WCF 激活节点被选中(勾选复选框)并且 WCF 激活下的两个选项也被选中。
    这些是:
    * HTTP 激活
    * 非 HTTP 激活
    两个选项都需要选择(勾选复选框)。

    【讨论】:

    • 如果我能不止一次地对此表示赞同,这让我发疯了,干杯!
    【解决方案4】:

    我看到你已经解决了你的问题 - 但为了后代:

    我们遇到了类似的问题,并且 SVC 处理程序已正确安装。我们的问题是 ExtensionlessUrl 处理程序在请求到达 SVC 处理程序之前对其进行处理。

    要检查这一点 - 在 Web 服务器级别的 IIS 管理器的处理程序映射中,按顺序查看处理程序列表(这是右侧的一个选项)。如果各种 ExtensionlessUrl 处理程序出现在 SVC 处理程序上方,则反复将它们向下移动,直到它们位于底部。

    【讨论】:

      【解决方案5】:

      以上解决方案都没有为我解决此错误。我必须在 web.config 中设置以下内容:

      system.servicemodel > bindings > webHttpBinding > binding:
      
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
      

      我想借此机会再次诅咒 Microsoft,因为它在 .NET Framework 上造成了如此巨大的混乱,并使开发人员的生活如此悲惨!

      【讨论】:

      • 我会为此喝一杯!微软对 WCF 配置疯狂问题的解决方案是在 .NET Core 中杀死该产品。
      • 我已经搬到 Go 并且永远不会回去了。如果您曾经使用过经典的 ASP,那么它很简单,而且工作时不会出现问题或等待 .NET JIT 延迟编译网页。 Go也超级快!感觉就像运行一个静态网站。
      • Rust 怎么样?听到了好事,但也听到了一些可怕的事情,例如代码膨胀和虚假安全。
      • 我也看过 Rust。它现在变得非常流行,尤其是通过 WebAssembly 在浏览器中运行(快疯了!见arewewebyet.org),但对我来说,学习曲线比 Go 高得多。实际上,我在几天内就学会了 Go,而且它在运行时和编译项目时都非常快。这两种语言都比基于 JIT 的编译器(如 .NET 和 JVM)领先光年。
      【解决方案6】:

      验证您的目录是否已转换为应用程序是您的 IIS。

      【讨论】:

        【解决方案7】:

        我今天也遇到了同样的问题。

        对我来说,解决方案是进入 IIS,右键单击新网站名称,选择属性,ASP.Net,然后将 ASP.Net 版本从“1.1.4322”(它设置为默认)到 2.0.50727。

        完成后,我可以右键单击 .svc 文件,单击“浏览”并查看友好的服务网页。

        【讨论】:

          【解决方案8】:

          在 Windows 10 中启用 IIS 6 管理兼容性后,这也可能成为问题。在 WCF 服务下设置框架 HTTP 激活将解决该问题。

          【讨论】:

            【解决方案9】:

            在我的情况下,错误是由文件 applicationhost.config (\System32\inetsrv\config) 中的映射设置不正确引起的。出于某种原因,Visual Studio 2013 在 IIS 中创建虚拟目录时损坏了它。修复是手动编辑文件中的站点部分。

            【讨论】:

              【解决方案10】:

              2012 server 2012 add role/ features 中的 features 下给出了 2 个 .net framework 版本

              一个。 3.5

              b. 4.5

              根据使用的框架,您可以在 WCF 服务下启用HTTP-Activation。 :)

              【讨论】:

                【解决方案11】:

                在我的情况下,Win 10。文件 applicationHost.config 已被 VS 2012 损坏。您可以在 C:\inetpub\history 下获取此文件的历史记录。然后重新启动IIS,它就可以正常工作了。

                【讨论】:

                  【解决方案12】:

                  我必须在请求过滤设置中将扩展名 .svc 添加到允许的扩展名中(之前出现 404.7 错误)。

                  【讨论】:

                    【解决方案13】:

                    在请求过滤中添加 .svc 后缀对我有用。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2020-07-27
                      • 2023-03-29
                      • 2017-04-24
                      • 1970-01-01
                      • 2012-02-09
                      • 2012-02-01
                      • 2014-01-13
                      • 1970-01-01
                      相关资源
                      最近更新 更多