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

          > >

          > >

          > 

          > 

        
      
    
    
                                          

Responder a