Pregunta

He creado una operación de servicio muy básico que tiene que escribir el contenido de mi base de datos. Este servicio tiene el siguiente aspecto:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(IncludeExceptionDetailInFaults = false)]
public class myService : ImyService
{
  public MyServiceResult MyMethod(string p1, string p2)
  {
    try
    {
      // Do stuff
      MyResponseObject r = new MyResponseObject();
      r.Property1 = DateTime.Now;
      r.Property2 = "Some other data";
      return r;
    }
    catch (Exception ex)
    {
      return null;
    }
  }
}

ImyService se define como se muestra aquí:

[ServiceContract]
public interface ImyService
{
  [OperationContract]
  [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]
  MyServiceResult MyMethod(string p1, string p2);
}

Este servicio estará expuesto a ambas aplicaciones cliente WP7 y el iPhone. Debido a esto, creo que necesito utilizar webHttpBinding. Esto ha causado que yo use los siguientes ajustes en mi archivo web.config:

<system.serviceModel>      
  <behaviors>
    <endpointBehaviors>
      <behavior name="myServiceBehavior">
        <webHttp />
      </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>

  <serviceHostingEnvironment 
    aspNetCompatibilityEnabled="true"   
    multipleSiteBindingsEnabled="true" />
  <services>
    <service name="myService">
      <endpoint address="" 
        behaviorConfiguration="myServiceBehavior" 
        binding="webHttpBinding" 
        contract="ImyService" />
    </service>
  </services>
</system.serviceModel>

Tanto el servicio y la aplicación WP7 son parte de la misma solución. Puedo agregar correctamente una referencia al servicio en mi aplicación. Cuando ejecuto la aplicación embargo, la página que hace referencia al servicio genera un error. El error dice:

No se pudo encontrar el elemento extremo predeterminado que las referencias contrato 'MyServiceProxy.ImyService' en la sección de configuración del cliente de ServiceModel. Esto podría ser debido a que no se encontró el archivo de configuración para su aplicación, o porque no hay ningún elemento punto final a juego este contrato se pudo encontrar en el elemento cliente.

¿Qué estoy haciendo mal? Sólo parece que esto debe ser una cosa bastante sencillo. Gracias por su ayuda.

¿Fue útil?

Solución

¿Ha copiado el archivo "ServiceReferences.ClientConfig" dentro de su proyecto de Windows Phone 7? Este archivo está en su proyecto de WCF. Además, los clientes WP7 apoyan basicHttpBinding solamente. Por lo tanto, se puede ver un archivo vacío "ServiceReferences.ClientConfig" menos que cambiar a basicHttpBinding

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top