2010-08-21 7 views
8

Solo he podido encontrar un par de personas en línea mencionando esto, y parece ser tan simple para ellos como agregar la referencia del servicio.¿Se pueden usar los servicios de WCF con Windows Phone 7?

Sin embargo, cuando intento agregar una referencia de servicio para mi servicio WCF (que funciona correctamente en una aplicación de consola normal, por lo que he descartado el WCF como problema) recibo una serie de errores.

  • Advertencia 5 Advertencia sobre la herramienta personalizada: No se encontraron puntos finales compatibles con Silverlight 3. La clase de cliente generado no será utilizable a menos que la información de punto final se proporcione a través del constructor.
  • Advertencia 6 Advertencia sobre herramientas personalizadas: el destinatario de una invocación ha emitido una excepción.
  • Advertencia advertencia de la herramienta 2 Personalizado: No se puede importar WSDL: portType Detalle: Se inició una excepción durante la ejecución de una extensión de importación de WSDL: System.Runtime.Serialization No se pudo cargar el tipo': System.ServiceModel.Description.DataContractSerializerMessageContractImporter
  • error .DataContractSet 'del ensamblado' System.Runtime.Serialization, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e '.
  • Advertencia 4 Advertencia sobre herramientas personalizadas: No se puede importar wsdl: puerto Detalle: Se produjo un error al importar un wsdl: enlace del que depende el puerto wsdl :.
  • Advertencia 3 Advertencia sobre la herramienta personalizada: No se puede importar wsdl: binding Detalle: Hubo un error al importar un wsdl: portType del que depende el wsdl: binding.
  • Error 7 Error de herramienta personalizada: Error al generar código para la referencia de servicio 'ServiceReference'. Por favor verifique otros mensajes de error y advertencia para más detalles.

Me resulta extraño que el primer error mencione Silverlight 3, ya que desinstalé y volví a instalar completamente todas mis herramientas de desarrollo para asegurarme de estar utilizando la última versión de .NET y Silverlight.

Estos errores son similares a los que veo si intento crear un nuevo proyecto de Silverlight y no marque la casilla "Habilitar servicios WCF RIA". No he podido encontrar ningún medio para habilitar eso para WP7, si ese es realmente el problema.

Cualquier ayuda de ustedes caballeros eruditos (y gentlewomen) sería muy apreciada.

Respuesta

0

Sí, esto es un error extraño. Podrás devolver cadenas, enteros, etc., pero cualquier cosa como ArrayList, etc., obtendrás este error.

No hay nada de malo en su código, solo hay un error con VS. Microsoft lo ha solucionado (revisa los paquetes de servicio) pero si estás programando para Windows Phone 7, el error aún está allí.

Tiene Eliminar el servicio, luego Bin y Obj Folder. Guarde y cierre VS. A continuación, reinicie el proyecto, agregue la referencia de servicio (NO DEPURAR/EJECUTAR la aplicación). Oh sí HAGA UNA COPIA DE SEGURIDAD PRIMERO. Deberia estar bien. Es posible que deba repetir este proceso cada vez que actualice el Servicio.

Esto debería solucionarlo, de lo contrario, es posible que tenga que abrir un nuevo proyecto o, si es posible, volver a crear el servicio web.

7

Mmmm, acabo de cambiar la configuración de referencia del servicio desmarcando el cuadro "reutilizar el tipo ..." y luego la actualización funcionó y generó el archivo de configuración del servicio. ¿No estás seguro si esto te ayudará?

+0

+1, tuve este problema con el servicio de traducción de MS y esto pareció solucionarlo –

7

Recuerde que Silverlight, incluso para Windows Phone, que utiliza una versión especializada de Silverlight 3, NO funciona con todos los enlaces/puntos finales del servicio WCF, sino que solo admite un subconjunto (que excluye enlaces WS-HTTP, por ejemplo).) Su apuesta más simple es crear su servicio WCF para aplicaciones Silverlight utilizando la plantilla "Servicio WCF habilitado para Silverlight" en Visual Studio (en Agregar/Nuevo elemento/Silverlight).

Esta entrada de blog (http://blogs.msdn.com/b/silverlightws/archive/2009/03/20/what-s-new-with-web-services-in-silverlight-3-beta.aspx) del blog de Silverlight WCF Team debería arrojar algo de luz sobre las posibilidades. Es posible que desee consultar todo el blog (http://blogs.msdn.com/b/silverlightws/), ya que tiene algunos interesantes artículos de cómo hacer y obtener.

7

Me encontré con el mismo error exacto, y cambié el tipo de colección a System.Collections.Generic.List en lugar de System.Collections.ObjectModel.ObservableCollections.Esto fue extraño ya que ni siquiera marqué la casilla "Generar siempre contratos de mensajes".

Espero que ayude.

1

Este problema se produjo cuando ejecuta Visual Studio con privilegio de administrador. Lo que puede hacer para una solución alternativa es ejecutar Visual Studio sin privilegios de administrador, agregar la referencia del servicio web que generará las clases proxy y cerrar la solución. Abra la solución del proyecto nuevamente en Visual Studio con privilegio de administrador. Un informe de error ya está archivado en Microsoft Connect.

https://connect.microsoft.com/VisualStudio/feedback/details/624984/error-warnings-when-adding-web-reference-on-windows-phone-7-project?wa=wsignin1.0

+0

Me encontré con esto mientras desarrollaba una aplicación Windows Phone 7 con un backend de Windows Azure. La estructura de desarrollo local de Windows Azure requiere que se ejecute como administrador. Gracias Ken! – markti

0

La respuesta es sí, puede acceder a los servicios de WCF desde WP7, y al igual que un cartel anterior, señaló que solo es compatible con WS-HTTP. En el caso de que usted está tratando de acceder a un servicio WCF para una aplicación Silverlight entonces hay algunas cosas que usted necesita hacer:

  1. actualización de su Silvleright Toolkit a la última. Vaya a obtenerlo de Codeplex
  2. Agregue una referencia a Microsoft.ServiceModel.DomainServices.Hosting a su proyecto de Silverlight.
  3. Ir a la Web.Config y añadir el punto final de jabón:

     
    <domainServices> 
        <endpoints> 
         <add name="Soap" 
          type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory, 
    Microsoft.ServiceModel.DomainServices.Hosting" 
         /> 
        </endpoints> 
    </domainServices>

    No se preocupe por la advertencia "system.serviceModel"; ignórelo

  4. Agregue la referencia del servicio. "Pero, ¿qué uri?" usted pregunta. La dirección de su servicio es esta: [namespace of your ria service]-[classname of your ria service].svc donde . se reemplazan por -. Por lo tanto, si he creado mi servicio en el interior de un directorio de servicios en mi solicitud SL y el espacio de nombres tiene este aspecto:

     
    namespace myApplication.Web.Services 
    { 
        [EnableClientAccess()] 
        public class SuperService .... 
    

continuación, la dirección sería:

http://localhost[:port]/Services/myApplication-Web-Services-SuperService.svc 

Deje el utillaje Haz el resto. Si obtiene algunos errores funky, guarde y cierre VS y comience de nuevo, y todo funciona.

Espero que esta sea la respuesta que está buscando.

0

A continuación se resolvió mi problema:

he creado un nuevo proyecto WP7 añadió el servicio WCF.

Luego copié la carpeta de Referencias del servicio al directorio de mi proyecto que me dio este problema y reinicié Visual Studio y construí la aplicación.

Debería obtener errores de espacio de nombres dentro de su Reference.cs; simplemente cambie el espacio de nombres al espacio de nombres del proyecto actual.