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]

          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