2011-11-30 16 views
6

Estoy tratando de construir un servicio web REST básico que simplemente devuelve la hora actual y cada vez que intento me sale el siguiente error cada vez que intenta llamar a mi servicio http://localhost:PORT/TimeService/CurrentTime:servicio web reparador punto final no encontró

Punto final no encontrado. Consulte la página de ayuda del servicio para construir solicitudes válidas para el servicio.

¿Qué estoy haciendo mal? A continuación puede encontrar todo el código que estoy usando. Gracias

Service1.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.ServiceModel; 
using System.ServiceModel.Activation; 
using System.ServiceModel.Web; 
using System.Text; 

namespace WcfRestService1 
{ 
    [ServiceContract] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
    public class TimeService 
    { 
     [WebGet(UriTemplate = "CurrentTime")] 
     public string CurrentTime() 
     { 
      return DateTime.Now.ToString(); 
     } 
    } 
} 

Global.asax

using System; 
using System.ServiceModel.Activation; 
using System.Web; 
using System.Web.Routing; 

namespace WcfRestService1 
{ 
    public class Global : HttpApplication 
    { 
     void Application_Start(object sender, EventArgs e) 
     { 
      RegisterRoutes(); 
     } 

     private static void RegisterRoutes() 
     { 
      RouteTable.Routes.Add(new ServiceRoute("TimeService", 
       new WebServiceHostFactory(), typeof(TimeService))); 
     } 
    } 
} 

web.config

<?xml version="1.0"?> 
<configuration> 

    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 

    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </modules> 
    </system.webServer> 

    <system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    <standardEndpoints> 
     <webHttpEndpoint> 
     <!-- 
      Configure the WCF REST service base address via the global.asax.cs file and the default endpoint 
      via the attributes on the <standardEndpoint> element below 
     --> 
     <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/> 
     </webHttpEndpoint> 
    </standardEndpoints> 
    </system.serviceModel> 

</configuration> 
+2

No sé si fuera de la mano que hace que el execption pero no ¿Le falta el atributo '' [OperationContract] en el método CurrentTime –

+0

Desde .NET 4.0 que no es necesario el [OperationContract ] más si tiene [WebGet] o [WebInvoke] para servicios WCF HTTP. – carlosfigueira

+0

¿En qué vdir/aplicación se encuentra el archivo.asax global? Si no está directamente en la raíz de IIS, la dirección debe ser http: // localhost: PORT/ApplicationName/TimeService/CurrentTime – carlosfigueira

Respuesta

4

Este es uno de los mejores artículos que encontré cuando empecé a aprender descanso; Ojalá estuviera en el trabajo ahora, tengo el ejemplo exacto de TimeService, pero simplemente busqué en Google y no pude encontrar el mismo código.

Mañana de trabajo publicaré un ejemplo de trabajo si aún lo necesita.

http://geekswithblogs.net/michelotti/archive/2010/08/21/restful-wcf-services-with-no-svc-file-and-no-config.aspx

+1

Eso sería muy útil si pudieras publicar eso. – atrljoe

Cuestiones relacionadas