Tengo un servicio RESTful que no funciona. Cuando yo escriba el URI en la barra de direcciones, me aparece este error:

No se encuentra el recurso.

Descripción: HTTP 404. El recurso que está buscando (o una de sus dependencias) se han quitado, haya cambiado de nombre o no esté disponible temporalmente. Por favor, revise la siguiente dirección URL y asegúrese de que está escrito correctamente.

Dirección URL solicitada: /VirtualRUS/Service1.svc/

No puedo decirte por qué no su trabajo. He comparado mi código y web.config para un ejemplo de trabajo, y no soy capaz de encontrar las diferencias.

EDICIÓN: También, soy capaz de utilizar el servicio muy bien si puedo usar un servicio de referencia. Simplemente no funciona si me vaya a la URI, o lo que es más importante, cuando trato de hacer un WebRequest.

¿Alguien tiene alguna idea de por qué esto no iba a funcionar?

Service1.cs:

[ServiceContract]
public interface IService1
{
   [OperationContract]
   [WebGet(UriTemplate = "/")]
   string Test(); 
}

Service1.svc.cs:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service1 : IService1
{
   public string Test()
   {
      return "It works!!";
   }
}

Web.Config:

<?xml version="1.0" ?>
<configuration>
<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>
<appSettings></appSettings>
<connectionStrings>
<add name="ResearchLibrary" connectionString="Server=XXXXXX" ; Initial Catalog=ResearchLibrary; user id=XXX; password=XXX " />
</connectionStrings>
<system.web>
<compilation debug="true ">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089 "/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</assemblies>
</compilation>
<authentication mode="Windows "/>
<pages>
<controls>
<add tagPrefix="asp " namespace="System.Web.UI " assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</controls>
</pages>
<httpHandlers>
<remove verb="* " path="*.asmx "/>
<add verb="* " path="*.asmx " validate="false " type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
<add verb="* " path="*_AppService.axd " validate="false " type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
<add verb="GET,HEAD " path="ScriptResource.axd " type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 " validate="false "/>
</httpHandlers>
<httpModules>
<add name="ScriptModule " type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</httpModules>
<httpRuntime maxRequestLength="65536 "/>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp " extension=".cs " warningLevel="4 " type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ">
<providerOption name="CompilerVersion " value="v3.5 "/>
<providerOption name="WarnAsError " value="false "/>
</compiler>
</compilers>
</system.codedom>
<system.web.extensions>
<scripting>
<webServices>
</webServices>
</scripting>
</system.web.extensions>
<system.webServer>
<validation validateIntegratedModeConfiguration="false "/>
<modules>
<add name="ScriptModule " preCondition="integratedMode " type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated "/>
<add name="ScriptHandlerFactory " verb="* " path="*.asmx " preCondition="integratedMode " type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
<add name="ScriptHandlerFactoryAppServices " verb="* " path="*_AppService.axd " preCondition="integratedMode " type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
<add name="ScriptResource " preCondition="integratedMode " verb="GET,HEAD " path="ScriptResource.axd " type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</handlers>
</system.webServer>
<system.serviceModel>
<services>
<service name="ResearchUploadService.Service1 " behaviorConfiguration="ResearchUploadService.Service1Behavior ">
<!-- Service Endpoints -->
<endpoint address="customBinding " binding="customBinding " bindingConfiguration="basicConfig " contract="ResearchUploadService.IService1 "/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ResearchUploadService.Service1Behavior ">
<serviceMetadata httpGetEnabled="true "/>
<
<serviceDebug includeExceptionDetailInFaults="true "/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="basicConfig ">
<binaryMessageEncoding/>
<httpTransport transferMode="Streamed " maxReceivedMessageSize="67108864 "/>
</binding>
</customBinding>
</bindings>
</system.serviceModel>
</configuration>
Puedes publicar el contenido de Service1.svc y web.config?
Yo realmente no sé cómo escribir el contenido de Service1.svc. Cuando hago doble clic en él en el Explorador de soluciones, se abre Service1.svc.cs.
Usted puede mirar en el contenido de Service1.svc haciendo clic derecho y seleccione «vista de marcado»

OriginalEl autor Jimmy | 2011-05-23

1 Comentario

  1. 11

    Su extremo no es un extremo REST, es un «normal» de extremo SOAP (codificación binaria /http transporte). RESTO de las estaciones se define con una unión específica (webHttpBinding) y el comportamiento (webHttp). También, Agregar Referencia de Servicio no funciona para el RESTO de los extremos, que es también una indicación de que si funciona para usted, entonces usted no está utilizando un extremo REST.

    Para cambiar su extremo para ser Tranquilo, usted puede cambiar la web.de configuración como se muestra a continuación (se añade un extremo REST además del JABÓN que ya tiene).

    <system.serviceModel>
    <services>
    <service name="ResearchUploadService.Service1" behaviorConfiguration="ResearchUploadService.Service1Behavior">
    <!-- Service Endpoints -->
    <endpoint address="customBinding" binding="customBinding" bindingConfiguration="basicConfig" contract="ResearchUploadService.IService1"/>
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="REST" contract="ResearchUploadService.IService1"/>
    </service>
    </services>
    <behaviors>
    <serviceBehaviors>
    <behavior name="ResearchUploadService.Service1Behavior">
    <serviceMetadata httpGetEnabled="true"/>
    <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
    <behavior name="REST">
    <webHttp/>
    </behavior>
    </endpointBehaviors>
    </behaviors>
    <bindings>
    <customBinding>
    <binding name="basicConfig">
    <binaryMessageEncoding/>
    <httpTransport transferMode="Streamed" maxReceivedMessageSize="67108864"/>
    </binding>
    </customBinding>
    </bindings>
    </system.serviceModel>
    Que solucionado! Muchas gracias.
    hey ¿cómo puedo dar un 10 upvotes 🙂 .. gracias por la solución
    solucionado! Muchas gracias

    OriginalEl autor carlosfigueira

Dejar respuesta

Please enter your comment!
Please enter your name here