2009-11-03 28 views
10

Estoy usando Visual Studio 2008 y tengo un cliente WCF trabajando contra un servicio WCF. Ambos se encuentran en la misma solución de Visual Studio. Después de hacer un cambio en mi contrato de WCF, quiero actualizar la referencia de servicio en el cliente para que los cambios realizados en el contrato también se realicen en el proxy.Actualizar la referencia de servicio no funciona

Mi problema es que el código proxy no se vuelve a generar.

Cuando selecciono para actualizar la referencia de servicio, ocurre lo siguiente:

  1. un cuadro de diálogo con el título "Actualización referencia de servicio 'nombre-de-referencia'" se muestra. Este diálogo tiene una barra de progreso.
  2. ProgressBar se mueve y el texto de estado en el cuadro de diálogo se cambia a "configuración de una reforma"
  3. El progressbar mueve un poco más, y el texto de estado se chnaged de "actualización de la configuración completa"

El cuadro de diálogo no muestra el texto "Generando \ algo \" (no puedo recordar la redacción exacta) que exhortaría.

Si elimino la referencia de servicio y la vuelvo a agregar, el proxy se genera correctamente. Agregué el servicio usando exactamente la misma configuración que antes, así que no creo que sea un problema que pueda resolver cambiando la configuración de referencia de servicio en el cliente.

Una cosa que sospecho que puede ser el problema es que he cambiado el nombre al predeterminado wsHttpBindings en app.config. También he cambiado el nombre de los puntos finales predeterminados. La razón detrás de esto es que necesito más de un punto final y tener uno llamado 'algún-nombre-predeterminado' y otro con mi propio nombre es confuso.

El problema al eliminar el servicio y agregarlo nuevamente es que Visual Studio agrega un nuevo enlace en app.config (entre otras cosas) que no debería estar allí.

¿Alguien ha visto este problema antes? Alguien sabe de una solución para eso?

Respuesta

6

Cuando hemos tenido este problema ha sido por lo general uno de estos errores:

  • El tamaño del contrato se ha incrementado, y ahora es tan grande que la configuración de WCF no permite que sea transferido.
  • Se ha agregado una nueva clase a una interfaz WCF y esa clase no está marcada como serializable.
  • No es un error de compilación que se detiene el código de la construcción y por lo tanto utiliza el antiguo DLL
+8

Desgraciadamente ninguno de los que corresponden a mi caso. Cuando borro la referencia y la vuelvo a agregar, funciona bien. Si el contrato era tan grande o hubo algún error internacional él WCF contrato, que no funcionaría después de la cancelación/añade operación. – Nitramk

1

Mi problema era que tenía dos métodos con el mismo nombre. Todo fue bien, pero no pude actualizar la referencia del servicio. Cuando traté de iniciar solo el servicio WCF, aparece el error.

+0

Tuve este problema también. El compilador no se queja cuando crea el proyecto de servicio, pero la referencia de servicio en el proyecto de consumidor no se actualizará. Me di cuenta de que si la 'su servicio ha sido acogido' emergente no aparece cuando se actualiza a continuación, la actualización no funcionará bien. –

1

Mi error fue que olvidé agregar el atributo OperationContract.

+0

Esto es fácil de perder. –

3

En mi caso, el problema era que el desarrollador anterior había agregado la referencia de servicio utilizando el nombre de su máquina en lugar de localhost. Entonces, cuando le dije a Visual Studio que actualizara, se conectó a su máquina, que no tenía los cambios. Modifiqué los archivos de referencia del servicio y reemplacé su nombre de máquina con localhost y pude actualizar la referencia.

5

me he encontrado con este problema con las siguientes condiciones:

  1. Nuestras estaciones de trabajo están conectados a un dominio de Active Directory (casi todo utiliza la autenticación de Windows)
  2. La referencia de servicio Estoy intentando actualización está alojado en el servidor local, y se está ejecutando bajo IIS Express (para que el usuario del grupo de aplicaciones se está ejecutando como la cuenta de usuario de dominio personal del desarrollador)
  3. Otro desarrollador ha añadido o actualizado la referencia al proyecto más recientemente que yo.

La única manera que he encontrado la manera de solucionar este problema es editar el archivo configuration.svcinfo para esa referencia de servicio (necesitará para mostrar todos los archivos para el proyecto para verlo en Visual Studio), localice la siguiente sección:

userPrincipalName value="[email protected]" 

y cambia al usuario a mi propio usuario del dominio. Después de guardar el archivo, no tengo problemas para actualizar la referencia hasta que otro desarrollador actualiza la referencia de servicio (probablemente utilizando la misma solución). Lamentablemente, no he podido encontrar una solución permanente a este problema.

+0

Funcionó para mí. ¡¡Gran hombre!! Gracias. – Mayeed

0

sé esta solución es un poco tarde, pero después de probar con las soluciones publicadas sin éxito, esto funcionó:

Cuando se crea un servicio web, se genera un archivo .dll que se hace referencia como su referencia de servicio. Este .dll es (como la mayoría sabe) no se recrea cada vez que realiza cambios en el archivo .SVC. Esto se puede ver si vas y ver la propiedad modificada fecha del archivo .dll servicio web, en mi caso se trataba de tres horas de vida!

Mi solución fue hacer los cambios apropiados en el contacto del servicio, guardarlo y volver a compilar el proyecto, lo que provocará que vuelva a crear todos los .dll reflejando los cambios realizados en el archivo de contacto de servicio (.svc).

Después de esto, actualice la referencia de servicio en la aplicación cliente, y los cambios son evidentes.

  • Picas
1

Resalte el servicio como el proyecto activo, F5 para ejecutarlo en VisualStudio, que se pondrá en marcha en la aplicación de pruebas de servicio. Detener la depuración. Luego intente actualizar su referencia de servicio, funcionó para mí.

+0

Esto funcionó para mí, haga clic en el archivo de .svc, hace clic en Examinar con, IE seleccionado. Cerré la página, luego actualicé la referencia y funcionó. Neill – Neill

1

Dos pasos fáciles de resolver que:

  1. Servicio Ejecutar, y luego se detiene.

  2. Actualizar la referencia de servicio.

1

Tuve este problema también. Se eliminó la referencia del servicio y se volvió a crear.

+0

Solo para agregar si alguien se encuentra con mi problema. La eliminación de Visual Studio no funcionó bien, tuve que eliminar tanto de VS, y luego desde el explorador de archivos. – omerts

0

que tenían el mismo problema. Modificó algunos de los contratos de datos. Intenté "Actualizar la referencia del servicio" y no vi el cambio. Soltó y volvió a agregar el servicio. Todavía no vi el cambio al escribir el código en el cliente. ¡Abrí mi cliente con Reflector y vi que los tipos de servicio tenían el cambio! Entonces, ¿por qué intellisense todavía mostraba propiedades antiguas?Reinició Visual Studio y las modificaciones finalmente se mostraron en intellisense.

0

he tenido el mismo problema, esto por mí que fue causada por GIT Conflicto de fusionado, me faltaba el siguiente código de mi archivo csproj

<ItemGroup> 
    <None Include="Service References\<SERVICE NAME>\Reference.svcmap"> 
     <Generator>WCF Proxy Generator</Generator> 
     <LastGenOutput>Reference.cs</LastGenOutput> 
    </None> 
    </ItemGroup> 

He añadido este onder la línea de Reference.svcmap

0

Otra solución a este tipo de problemas es si sus espacios de nombres consiguen involucrarse en proyectos de referencia que tanto consumir el servicio. Por lo tanto:

ProjectA - Consume serviceâ

ProjectB - Consume serviceâ, hace referencia a ProjectA

Si cambia serviceâ y actualizar ProjectB, a veces los espacios de nombres se pueden cambiar para mirar la versión de ProjectA del servicio.

Cuestiones relacionadas