代码之家  ›  专栏  ›  技术社区  ›  Mori

在Windows Server 2008(64位)上浏览wcf服务时出现“HTTP错误404.3-找不到”

wcf
  •  67
  • Mori  · 技术社区  · 15 年前

    我正在开发一个基于.NETFramework3.5SP1的应用程序,托管在WindowsServer2008(64位)上。

    在本地浏览wcf服务(.svc)时,一切正常,但在使用完整域URL浏览时,出现错误。

    本地地址如下: http://localhost/MyService.svc

    http://MySite.ir/MyService.svc

    如有任何意见,我们将不胜感激

    详细错误如下:


    HTTP错误404.3-未找到

    由于扩展配置的原因,无法为您请求的页面提供服务。如果页面是脚本,请添加处理程序。如果要下载该文件,请添加MIME映射。 详细错误信息

    通知:

    经办人:

    错误代码:

    请求的URL: http://MySite.ir:80/MyService.svc

    匿名的

    登录用户 匿名的

    7 回复  |  直到 15 年前
        1
  •  231
  •   Mauricio Gracia Gutierrez    7 年前

    请确保已从激活WCF组件 here .

    或者另一种简单的方法是,进入控制面板->打开或关闭Windows功能->并确保您已经勾选了下面屏幕截图中提到的所有选项。

    enter image description here

        2
  •  27
  •   Mori    15 年前

    处理程序映射 | --&燃气轮机;然后添加以下信息

    请求路径:

    类型: System.ServiceModel.Activation.HttpHandler,System.ServiceModel,版本=3.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089

        3
  •  11
  •   Community CDub    8 年前

    如果有人在WindowsServer2012上有这个问题,BillMoon的答案是 here

    “对于Windows Server 2012。。。在服务器管理器中,单击添加角色和功能,选择适当的服务器,然后选择功能。在.NET Framework 4.5功能下,您将看到WCF服务,在该功能下,您将看到HTTP激活。”

        4
  •  8
  •   Community CDub    5 年前

    我的笔记本电脑中有Windows10,并使用VisualStudio2015进行WCF开发。WCF在visualstudio中运行良好,但在IIS中托管时,我遇到了相同的错误。

    我检查了IIS处理程序。缺少svc扩展名。所以我试着在IIS中添加新的处理程序,就像Mori在第一个答案中建议的那样。我没有找到类型“System.ServiceModel.Activation.HttpHandler”。

    所以我打开了“打开或关闭windows功能”并安装了屏幕截图中突出显示的功能。

    enter image description here

        5
  •  0
  •   Community CDub    8 年前

    如果您使用的是.Net 4.x,则PublicKeyToken是31bf3856ad364e35。

    然而,以下 this post

        6
  •  0
  •   Janspeed    10 年前

    我想把这个作为一个评论添加到答案中,但是没有足够的代表。我试着用不同的标志运行ServiceModelReg和aspnet\u regiis.exe,并添加了HTTP激活功能,但仍然不起作用。即使在IIS中使用处理程序映射UI也不起作用,因为它找不到System.ServiceModel.Activation.HttpHandler。最后成功的是将Mori提到的处理程序手动添加到我的web.config文件中。

    <system.webServer>
        <handlers>
          <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
    

    我的项目在Windows 7上运行.Net 3.5和IIS 7.5,在Win Server 2008 R2上运行IIS 7.0。

        7
  •  0
  •   Stefan Ferstl    9 年前

    尝试从“打开或关闭窗口”窗口中取消选中WCF HTTP激活( See here )并通过转到

    %windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\
    

    执行 ServiceModelReg -i