Al desarrollar un nuevo proyecto, utilizando asp.net tecnología central, el proyecto antiguo puede ser un servicio WCF desarrollado usando el .NET Framework 4, debido a que el coste de reconstrucción es demasiado alto, por lo que es necesario usar asp.net núcleo para llamar a la interfaz de servicio WCF.
Primero, crea dos nuevos proyectos:
ASP.NET proyecto Core 3.1: dotnet-core-call-wcf Proyecto .NET Framework 4 (aplicación de servicio WCF): schools-wcf-service
Visual Studio 2019 quiere crear un servicio WCF, no encuentro la plantilla, solución:
Selecciona Instalar más herramientas y funciones para abrir el instalador de Visual Studio. Selecciona la pestaña Componentes Individuales, desplázate hacia abajo hasta Actividades de Desarrollo, selecciona Windows Communication Foundation y haz clic en Modificar.
WCF crea dos interfaces de la siguiente manera:
El código de implementación de la interfaz es el siguiente:
Un contrato de servicio es un conjunto de operaciones de servicio relacionadas, y cuando aplicamos un Atributo de Contrato de Servicio en una interfaz, le damos un atributo de contrato de servicio. Sin embargo, para este tipo, su modismo no se convierte automáticamente en una operación contractual de servicio, y solo cuando se aplica la característica OperationContractAttribute puede el miembro correspondiente del método convertirse en una operación de servicio a la que se pueda acceder mediante llamada de servicio.
Cuando inicies el proyecto wcf, ejecutará automáticamente WcfTestClient e intentará llamarlo como se muestra en la figura de abajo:
Utilizar ASP.NET proyectos Core para llamar a servicios WCF
Haz clic derecho en Servicios Conectados, selecciona el servicio al que quieres añadir una conexión y selecciona el servicio WCF, como se muestra en la siguiente imagen:
Dirección de servicio cubierta: http://localhost:3705/Service1.svc
Posibles errores:
Dado que es imposible escribir la dirección de servicio WCF hasta la última hora, añade el siguiente código al archivo appsettings.json:
Edita el archivo Startup.cs y registra el servicio WCF con el siguiente código:
Llama al servicio wcf en el controlador HomeController, primera inyección de constructor, el código es el siguiente:
Llamando al servicio WCF:
Ejecuta la web de asp.net Core, el efecto es el siguiente que se muestra:
Intentamos modificar el servicio WCF para que la interfaz devuelva el resultado tras 3 minutos, y luego reiniciamos asp.net núcleo para llamar al servicio WCF, y el error es el siguiente:
AggregateException: One or more errors occurred. (The request channel timed out attempting to send after 00:01:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.) En este momento, necesitamos modificar el tiempo de espera por defecto, personalizar la vinculación BasicHttpBinding y volver a editar el archivo Startup.cs, de la siguiente manera:
Descarga del código fuente:
Turistas, si queréis ver el contenido oculto de esta publicación, por favor Respuesta
|