Muchas gracias José!!
Ayuda aceptada jaja!!
Si es posible, unas líneas de código de un WS en Visual Basic (O el que
consideres mas apto) simplemente que invoque una función de una DLL
creada en VFP... con esto calculo que será suficiente para adaptarlo, no?
Mil gracias
Gustavo
El 21/08/2015 a las 21:03, Jose Paez escribió:
Hola Gustavo
Yo utilizo las versiones Profesional/Enterprise de Visual Studio, no
he probado con Community. Supongo que debe funcionar bien para el
desarrollo.
Si necesitas ayuda para la solución y el proyecto, avisame, dentro de
mis tiempos vemos de preparar algo que le sea útil a la comunidad.
Saludos
José Paez
------------------------------------------------------------------------
Date: Fri, 21 Aug 2015 16:49:21 -0300
From: [email protected]
To: [email protected]
Subject: [GUFA] Web Service con SOAP Toolkit con Internet Information
Services 10
Muchísimas Gracias Jose!!
Ahora estoy bajando el Visual Studio Community... alcanza o necesito
otra cosa?
Saludos
Gustavo
El 20/08/2015 21:12, Jose Paez escribió:
Hola Gustavo
Sugiero que dentro del C:\inetpub\wwwroot crees una carpeta por
ejemplo "MiProyectoWS".
Desde IIS agrega a un nuevo Sitio Web y establece el directorio de
contenido (ruta física --> "C:\inetpub\wwwroot\MiProyectoWS")
En Visual Studio vas a publicar/sincronizar el WS en
C:\inetpub\wwwroot\MiProyectoWS.
Tambien podes crear una carpeta
"C:\inetpub\wwwroot\MiProyectoWS\DLLs", allí copia el componente
más los runtimes de VFP9.
Va a ser necesario registrar el componente VFP con REGSVR32 o bien
existe la posibilidad de utilizar Component Services.
Es importante que hayas realizado el testing de la DLL asegurando
el funcionamiento, paths, permisos, seguridad, etc.
Cualquier duda avise nomas ;o)
Saludos
José Paez
Q
------------------------------------------------------------------------
Date: Thu, 20 Aug 2015 16:17:44 -0300
From: [email protected] <mailto:[email protected]>
To: [email protected] <mailto:[email protected]>
Subject: [GUFA] Web Service con SOAP Toolkit con Internet
Information Services 10
Impresionante José!! Muchas gracias!!
Entonces guardo la DLL que quiero usar en c:\inetpub\wwwroot y en
el código del WS de Visual Basic declaro las funciones de esa DLL
y listo?
¿Entendí bien o estoy siendo muy simplista?
Gracias nuevamente
Gustavo
El 20/08/2015 15:45, Jose Paez escribió:
Hola Gustavo
Si, podes realizar el Web Service con .Net y que este utilice
los servicios de un componente desarrollado en VFP.
Saludos
José Paez
&& Ejemplo de la estructura de la clase que tendrás que
compilar como DLL en VFP9
#Define CRChr(13)
#Define CRCRChr(13)+Chr(13)
#Define CRLFChr(13)+Chr(10)
Define Class Gateway As Session OlePublic
Path= "C:\"
Log= "C:\"
************************************************************************
* Gateway :: Init
************************************************************************
Procedure Init
If Not This.OnLoad() Then
Return .F.
Endif
Endproc
************************************************************************
* Gateway :: Destroy
************************************************************************
Procedure Destroy
This.OnDestroy()
Endproc
************************************************************************
* Gateway :: Error
************************************************************************
Procedure Error(lnError, lcMethod, lnLine)
Local;
Array laErrorArray[7]
Local;
lnIAs Integer,;
lcErrMessage As String
= Aerror( laErrorArray )
lcErrMessage = ;
"Error:" + Transform( lnError )+ CR +;
"Metodo:" + Transform( lcMethod )+ CR +;
"Linea:" + Transform( lnLine )+ CR +;
"Detalle:" + Message()
lcErrMessage = + CRCR + lcErrMessage + CRCR
For lnI = 1 To 7
lcErrMessage = lcErrMessage + Transform(lnI) + ": " +
Transform( laErrorArray( lnI ) ) + CR
Endfor
If Inlist( _vfp.StartMode, 3, 5 ) Then
Comreturnerror("Gateway: " + Proper( lcMethod ), lcErrMessage )
Endif
Endproc
************************************************************************
* Gateway :: OnLoad
************************************************************************
Hidden Function OnLoad As Boolean
Local;
llReturn As Boolean,;
loErrHandlerAs Exception
llReturn = .F.
Close Tables All
Close Databases All
Sys(2339,0) && Llamar a CoFreeUnusedLibraries al liberar un
objeto COM
Set Ansi On
Set Autoincerror On
Set Autosave Off
Set Blocksize To 64
Set Carry Off
Set Century On
Set Collate To "SPANISH"
Set Confirm Off
Set Currency To "$"
Set Database To
Set Date Dmy
Set Decimals To 2
Set Deleted On
Set Exact On
Set Exclusive Off
Set Fields Off
Set Fixed Off
Set Hours To 24
Set Lock Off
Set Mark To "/"
Set Multilocks On
Set Near Off
Set Null Off
Set Point To "."
Set Reprocess To Automatic
Set Safety Off
Set Seconds On
Set Sysformats Off
Set Talk Off
Set TableValidate To 0
Set Unique Off
Clear Error
Try
&&
&& Aqui tu codigo de inicialización
&&
Catch To loException
lcErrMessage = CRLF +;
"********* Fecha/Hora: " + Transform( Datetime() ) + CRLF + ;
"Error: " + Transform( loException.ErrorNo )+ CRLF + ;
"Metodo: " + Transform( loException.Procedure )+ CRLF + ;
"Linea: " + Transform( loException.Lineno )+ CRLF + ;
"Detalle: " + Transform( loException.Details )+ CRLF + ;
"Mensaje: " + Transform( loException.Message )
Strtofile( lcErrMessage, This.Path + "Gateway.err", 1)
This.ReturnError( loException )
Endtry
Return llReturn
Endfunc
************************************************************************
* Gateway :: OnDestroy
************************************************************************
Hidden Procedure OnDestroy
Close Tables All
Close Databases All
Endproc
************************************************************************
* Gateway :: ReturnError
************************************************************************
Hidden Procedure ReturnError( loException As Exception )
Local;
lcMensaje As String
If Vartype( loException.UserValue ) = "C" And Not Empty(
loException.UserValue ) Then
lcMensaje = loException.UserValue
Else
lcMensaje = loException.Message
Endif
lcErrMessage = CRLF +;
"********* Fecha/Hora: " + Transform( Datetime() ) + CRLF + ;
"Error: " + Transform( loException.ErrorNo )+ CRLF + ;
"Metodo: " + Transform( loException.Procedure )+ CRLF + ;
"Linea: " + Transform( loException.Lineno )+ CRLF + ;
"Detalle: " + Transform( loException.Details )+ CRLF + ;
"Mensaje: " + lcMensaje
loError = Createobject("Exception")
loError.Message = lcErrMessage
loError.ErrorNo = loException.ErrorNo
Strtofile( lcErrMessage, This.Path + "Gateway .err")
Endproc
************************************************************************
* Gateway :: Trace
************************************************************************
Hidden Procedure Trace( tcMessage )
tcMessage = Dtoc( Date() ) + " - " + Time() + Chr(9) +
tcMessage + CRLF
Strtofile( tcMessage , This.Path + "Gateway.log", 1)
Endproc
************************************************************************
* Gateway :: Procesar
************************************************************************
Function Procesar;
(;
) As boolean
This.Trace( "Procesar - Inicio" )
Local llResult As Boolean
Local loGateway as Object
Local loException, lcErrorMsg, loWSHandler
llResult = .F.
Try
llResult = MiFuncion()
Catch To loException
This.Trace( "Elegibilidad - Error" )
lcErrorMsg = "Error: " + Transform( loException.ErrorNo ) + "
- " + loException.Message
lcErrorMsg = lcErrorMsg + CR + loGateway.Detail
This.Trace( lcErrorMsg )
loException.UserValue = lcErrorMsg
This.ReturnError( loException )
Finally
loGateway = Null
Endtry
This.Trace( "Procesar - Fin" )
Return llResult
Endfunc
Enddefine
&& Ejemplo de la clase en VB.Net que será publicada como
WebService
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService(Namespace:="http://tempuri.org/"
<http://tempuri.org/>)> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
_
Public Class Gateway
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function Procesar() As Boolean
Dim resultado As Boolean = False
Dim gateway As MiDLL.Gateway
Try
gateway = New MiDLL.Gateway
resultado = gateway.Procesar()
Catch ex As Exception
Throw ex
End Try
Return resultado
End Function
End Class
> Date: Wed, 19 Aug 2015 16:29:35 -0300
> From: [email protected] <mailto:[email protected]>
> To: [email protected] <mailto:[email protected]>
> Subject: [GUFA] Web Service con SOAP Toolkit con Internet
Information Services 10
>
> Hola amigos!!
>
> Viendo que nadie contestó, y que busqué por todas partes,
supongo que no
> se puede.
>
> Asique se me ocurre una alternativa con .NET, que nunca lo
usé y no
> tengo idea, pero si encontré muchísimo material para armar
Web Services
> con .NET, ya sea del lado del cliente o del servidor.
>
> Entonces mi pregunta es: ¿Puedo crear un Web Service con
.NET que llame
> las funciones de las DLL generadas con VFP? (Que actualmente
actúan como
> WS en un server Win 2K, funcionan bien, están probadas, todo!!)
>
> Porque aparentemente los Web Serivces creados con .NET son
muy fáciles
> de instalar y publicar con IIS 10...
>
> Agradezco cualquier tipo de dato que me ayude a encontrar el
camino a la
> luz...
>
> Saludos y gracias!!
>
>
>
> El 14/08/2015 17:52, Gustavo Señoriño escribió:
> > Hola a Todos!!
> >
> > Se puede instalar un Web Service desarrollado en VFP con
SOAP Toolkit
> > 3.0 en un server con IIS 10?
> >
> > Digo, si se cambia el server Win 2000 por uno mas nuevo, va a
> > funcionar bien?
> >
> > Gracias y buen finde
> > Gustavo
> >
> >
>
>