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 CR Chr(13)#Define CRCR Chr(13)+Chr(13)#Define CRLF
Chr(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; lnI As 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,; loErrHandler As
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.WebImports System.Web.ServicesImports
System.Web.Services.Protocols
<WebService(Namespace:="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]
> To: [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
> >
> >
>
>