Solución de problemas de los tutoriales de introducción a Windows Communication Foundation
En este artículo se proporcionan soluciones para los problemas y errores más comunes a los que se podría enfrentar al seguir los pasos descritos en Tutorial: Introducción a las aplicaciones de Windows Communication Foundation.
Problemas comunes
No puedo encontrar los archivos del proyecto no se encuentran en el disco duro.
Visual Studio guarda los archivos de proyecto en C:\Usuarios\<nombre de usuario>\source\repos.
No encuentro el archivo App.config generado por Svcutil.exe.
En Visual Studio, en la ventana Agregar elemento existente solo se muestran archivos con las siguientes extensiones de forma predeterminada:
- .cs
- .resx
- .settings
- .xsd
- .wsdl
Para mostrar todos los tipos de archivo, seleccione Todos los archivos (*.*) en la lista desplegable de la esquina inferior derecha de la ventana Agregar elemento existente.
Errores comunes
Compilación de la aplicación de servicio
Error BC30420 No se encontró "Sub Main" en "GettingStartedHost.Module1".
El punto de entrada es incorrecto para la aplicación de Visual Basic. Realice el siguiente cambio:
- En la ventana Explorador de soluciones, seleccione la carpeta GettingStartedHost y, a continuación, seleccione Propiedades en el menú contextual. a. En la ventana GettingStartedHost, en Objeto Startup, seleccione Service.Program (o el punto de entrada de la aplicación concreta) en la lista. b. En el menú principal, seleccione Archivo>Guardar todo.
Ejecutar la aplicación de servicio
HTTP no pudo registrar la dirección URL "http://+:8000/GettingStarted/CalculatorService". Su proceso no tiene los derechos de acceso a este espacio de nombres.
Para obtener acceso adecuado, inicie el proceso que hospeda el servicio Windows Communication Foundation (WCF) con privilegios administrativos:
- Para ello, seleccione el programa de Visual Studio en el menú Inicio y, a continuación, seleccione Más>Ejecutar como administrador en el menú contextual.
- Para una ventana de consola: seleccione Símbolo del sistema en el menú Inicio y, a continuación, seleccione Más>Ejecutar como administrador en el menú contextual.
- Para el Explorador de Windows: seleccione el ejecutable y, a continuación, seleccione Ejecutar como administrador en el menú contextual.
Compilación de la aplicación cliente
"CalculatorClient" no contiene una definición de "<nombre de método>" ni se encontró ningún método de extensión "<nombre de método>" que acepte un primer argumento de tipo "CalculatorClient" (¿falta una directiva using o una referencia de ensamblado?)
Solo los métodos marcados con el atributo ServiceOperationAttribute
se exponen públicamente. Si omite el atributo ServiceOperationAttribute
de un método en la interfaz ICalculator
, recibirá este mensaje de error durante la compilación.
No se ha encontrado el tipo o el nombre del espacio de nombres "CalculatorClient" (¿falta una directiva "using" o una referencia de ensamblado?)
Recibirá este error si no agrega el archivo generatedProxy.cs (o generatedProxy.vb) al proyecto del cliente cuando los generó con la herramienta Svcutil.exe.
Ejecución de la aplicación cliente
Excepción no controlada: System.ServiceModel.EndpointNotFoundException: No se ha podido conectar a "http://localhost:8000/GettingStarted/CalculatorService". Código de error TCP 10061: no se estableció ninguna conexión porque el equipo de destino la rechazó.
Este error se produce si se ejecuta la aplicación cliente sin iniciar primero el servicio. En primer lugar, ejecute la aplicación host para iniciar el servicio y, a continuación, ejecute la aplicación cliente.
Uso de la herramienta Svcutil.exe
"Svcutil" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.
Svcutil.exe debe estar en la ruta de acceso del sistema. La solución más fácil es usar el símbolo del sistema de Visual Studio. En el menú Inicio, seleccione el directorio Visual Studio <versión> y, después, Símbolo del sistema para desarrolladores para VS <versión>. Este símbolo del sistema establece la ruta de acceso del sistema en las ubicaciones correctas para todas las herramientas distribuidas como parte de Visual Studio.
Ejecución de aplicaciones de servicio y cliente
System.ServiceModel.Security.SecurityNegotiationException: se ha producido un error en la negociación de seguridad SOAP con "http://localhost:8000/GettingStarted/CalculatorService" para el destino "http://localhost:8000/GettingStarted/CalculatorService"
Este error se produce en un equipo unido a un dominio que no dispone de conectividad de red. Conecte el equipo a la red o desactive la seguridad para el servicio y el cliente.
Para desactivar la seguridad:
Para el servicio, reemplace el código que crea
WSHttpBinding
por el código siguiente:// Step 3: Add a service endpoint. selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");
Para el cliente, en el archivo de configuración, actualice el elemento <security> en el elemento <binding> de siguiente manera:
<binding name="WSHttpBinding_ICalculator"> <security mode="None" /> </binding>
Consulte también
Introducción a las aplicaciones de WCF
Inicio rápido de solución de problemas de WCF
Solución de problemas de instalación