运行WCF REST服务时在端点中出错

时间:2012-09-27 19:51:14

标签: wcf rest

我正在使用WebHttpBinding开发REST服务。 我的服务中的一切都很完美,但在运行时它会提供Error Endpoint not Found

web.config文件是这样的:

 <configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
  <system.serviceModel>
    <services>
      <service name="Service">
        <endpoint address="http://localhost:10492/Service.svc" binding="webHttpBinding" contract="IService" behaviorConfiguration="webby"/>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="webby">
          <webHttp helpEnabled="true"/>
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>

  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
      -->
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

在地址中我也尝试过这样:

<endpoint address="" binding="webHttpBinding" contract="IService" behaviorConfiguration="webby"/>

但它仍无效。

1 个答案:

答案 0 :(得分:1)

这是一个很好的链接,可以帮助您入门:http://weblogs.asp.net/kiyoshi/archive/2008/10/08/wcf-using-webhttpbinding-for-rest-services.aspx

您尝试连接到Web服务的地址是什么? (您是否尝试导航到Web浏览器中的地址,以及您键入的URL?)

[编辑]

由于您在Web应用程序中托管,IIS(或您正在使用的任何Web服务器)将期望服务存在服务描述符文件。您不能只在web.config中创建一个URI,并在IIS中托管它,而在文件系统上没有关联的“服务”文件(这是您的Service1.svc文件)。

这是在Internet Information Services中托管WCF服务的细微差别 - 如果您正在阅读为自托管方案设计的教程,则很容易忘记此步骤。

确保您的网站中有一个名为“Service1.svc”的文件,它应包含以下内容:

<%@ServiceHost Language="C#" Service="MyNamespace.Service1" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

以下是在IIS中托管REST服务的教程:http://saravananarumugam.wordpress.com/2011/03/04/simple-rest-implementation-with-webhttpbinding/

另一个引起我注意的问题是,您定义的端点地址(“http:// localhost:10492 / Service.svc”)不符合REST约定。我不指望这会是你的问题,但这是一个问题。