You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WCF报错:无终结点监听'localhost',404未找到及REST服务代码求助

解决WCF REST服务“无终结点监听localhost,返回404”的问题

我看你这是刚上手WCF REST服务遇到的经典配置坑,别慌,咱们一步步把它搞定。

首先,你给出的代码只完成了服务契约和实现,但WCF REST服务想要正常跑起来,正确的终结点与行为配置是核心——这也是你遇到404错误的根本原因,毕竟WCF默认是走SOAP协议的,REST需要专门的绑定和行为支持。

第一步:补全你的服务契约(ICalc.cs)

先把你没写完的JSONData操作契约补全,确保注解完整:

namespace WcfService1 {
    [ServiceContract]
    public interface ICalc {
        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "xml/{id}")]
        string XMLData(string id);

        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "json/{id}")]
        string JSONData(string id);
    }
}

第二步:关键配置Web.config(重中之重)

你大概率漏掉了这个配置文件的核心内容,直接复制粘贴到你的Web.config的<configuration>节点内:

<system.serviceModel>
  <services>
    <service name="WcfService1.Calc">
      <!-- REST服务核心终结点 -->
      <endpoint address="" 
                binding="webHttpBinding" 
                contract="WcfService1.ICalc"
                behaviorConfiguration="webHttpBehavior"/>
      <!-- 可选:元数据终结点,方便调试和添加服务引用 -->
      <endpoint address="mex" 
                binding="mexHttpBinding" 
                contract="IMetadataExchange"/>
    </service>
  </services>
  <behaviors>
    <endpointBehaviors>
      <behavior name="webHttpBehavior">
        <!-- 启用WebHttp行为,让WCF支持REST风格请求 -->
        <webHttp/>
      </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
      <behavior>
        <!-- 启用元数据发布,方便开发调试 -->
        <serviceMetadata httpGetEnabled="true"/>
        <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>

第三步:确认几个细节,避免踩坑

  1. 检查Calc.svc文件:确保它的内容正确指向你的服务类,内容应该是:
    <%@ ServiceHost Language="C#" Debug="true" Service="WcfService1.Calc" CodeBehind="Calc.svc.cs" %>
    
  2. 正确的访问地址:别直接访问localhost,要带上服务入口的.svc路径,比如你的服务跑在http://localhost:5000,那测试地址应该是:
    • XML接口:http://localhost:5000/Calc.svc/xml/123
    • JSON接口:http://localhost:5000/Calc.svc/json/456
  3. 托管环境检查:如果用IIS Express,确保端口没被占用;用本地IIS的话,确认站点绑定的应用程序池是.NET兼容版本。

简单来说,你之前的问题就是没给WCF配置REST所需的绑定和行为,把上面的配置补全,再用正确的地址访问,404的问题就能解决了。

内容的提问来源于stack exchange,提问作者Arun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:26:25