首页 > 解决方案 > 遇到 WCF 问题:HTTP 错误 404.0 - 未找到

问题描述

问题

我正在尝试使用 WCF 创建一个 Rest 服务。我在调用堆栈命名空间中创建了一个名为“Coronado.HUB”的 WCF 类,如下所示。当我向服务发出 http 请求时,我收到 404 错误。

源代码

using Coronado.HUB.Model;
using Coronado.HUB.Service;
using System;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace Coronado.HUB
{
    /// <summary>
    /// Returns Driver By ID
    /// </summary>
    [ServiceContract]
    public interface IDriverService
    {
        [OperationContract]
        [WebGet]
        Driver GetDriverById(Guid id);
    }

    /// <summary>
    /// Returns Driver Object By ID
    /// </summary>
    public class DriverService : IDriverService
    {
        public Driver GetDriverById(Guid id)
        {
            return DriverServiceProvider.Instance.GetDriverById(id);
        }
    }
}

因此,在我的 ASP.NET 项目中,我添加了以下 DriverService.svc 文件和以下参考

<%@ ServiceHost Service="Coronado.HUB.DriverService" %>

配置

最后,我将以下配置添加到我的 web.config

<system.serviceModel>
    <services>
     <service name="Coronado.HUB.DriverService">
        <endpoint address="" binding="webHttpBinding" contract="Coronado.HUB.IDriverService" behaviorConfiguration="RestService" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/XXX/DriverService/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" />
          <serviceDebug includeExceptionDetailInFaults="True" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="RestService">
          <webHttp defaultOutgoingResponseFormat="Json" defaultBodyStyle="Bare" />
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>

我已经尝试解决这个问题一天半了,但我无法让它工作。如果有人能告诉我我哪里出错了,我将不胜感激。感谢您的时间和考虑。

- 更新 -

我要解析的网址如下

http://localhost/XXX/DriverService.svc/GetDriverById?id=F200A17F-9E03-41EB-90FB-01B8665246BB

标签: c#asp.netrestwcf

解决方案


我遇到的问题是因为 WCF 没有向 IIS 注册。这是我的理解,pre .Net 4.0 - 这是通过命令行完成的。就我而言,我使用了程序和功能。这解决了问题

有关其他信息,请参阅:IIS 7 无法识别 svc 文件


推荐阅读