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) SaludosJosé Paez
Q Date: Thu, 20 Aug 2015 16:17:44 -0300 From: [email protected] To: [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 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.Web Imports System.Web.Services Imports 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 > > > > > >
