none
No trae datos al hacer el publish RRS feed

  • Pregunta

  • Buenos dias a todos, queria saber qué puede estar pasando con este web service que estoy haciendo y no funciona.

    Lo primero que hice fue desarrollar el web service, lo compilo y funciona perfecto. Luego lo publique con publish en IIS en windows 7 y cuando lo ejecuto ya me me devuelve nada de la base de datos.

    El codigo por si lo necesitan es el siguiente:

    Metodo:

     [WebMethod]
            public List<Marca> getMarcas()
            {
                Datos datos = new Datos();
                return datos.GetMarcas();
            }

    Metodo de Datos:

    public List<Marca> GetMarcas()
            {
                List<Marca> listaMarcas = new List<Marca>();

        accesoDatos acc = new accesoDatos();
                string query =
                    @"SELECT " +
                    "Marcas.Id_marca as id," +
                    "Marcas.nombre as nombre " +
                    "FROM Marcas ";

                DataTable dt = acc.OleDbDataAccess(query, null);

                if (dt != null)
                {
                    foreach (System.Data.DataRow row in dt.Rows)
                    {
                        Marca marca = new Marca();
                        marca.id_marca = Convert.ToString(row[0]);
                        marca.nombre = Convert.ToString(row[1]);

                        listaMarcas.Add(marca);
                    }
                }
                return listaMarcas;
            }

    Metodo de accesoDatos

    public DataTable OleDbDataAccess(string query, ICollection<OleDbParameter> parametersCollection)
            {
                DataTable dt = new DataTable("Tabla");
                OleDbConnection odc = new OleDbConnection(ConfigurationManager.ConnectionStrings["EiffelConnectionString"].ConnectionString);
                OleDbDataAdapter odda = new OleDbDataAdapter(query, odc);
                if (parametersCollection != null)
                {
                    foreach (OleDbParameter p in parametersCollection)
                        odda.SelectCommand.Parameters.Add(p);
                }
                try
                {
                    odc.Open();
                    odda.Fill(dt);
                    odc.Close();
                    return dt;
                }
                catch (Exception)
                {
                    odc.Close();
                }

                return null;
            }

    connection string (yo creo que el problema esta acá, pero no estoy seguro...):

    <add name="EiffelConnectionString" connectionString="Provider=vfpoledb;Data Source=C:\Eiffel\DatosNuevos\target.dbc;Collating Sequence=machine;"/>

    Saludos cordiales y gracias por responder


    Ezequiel Lansztein

    viernes, 17 de abril de 2015 19:20

Respuestas

  • >>El proveedor 'vfpoledb' no est&#225; registrado en el equipo local.

    eso se deba a que seguramente el sitio lo creaste con compatibilidad para 64bits y el proveedor de fox no lo soporta

    compila cambiando el platform target a x86

    y en el iis habilita la opcion imagen para la compatibilidad de 32 bit

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 17 de abril de 2015 20:52

Todas las respuestas

  • hola

    >>Luego lo publique con publish en IIS en windows 7 y cuando lo ejecuto ya me me devuelve nada de la base de datos

    no evaluaste que podrias estar teniendo un error y al hacer esto

    catch (Exception)
    {
            odc.Close();
    }

    nunca te enteras

    al menos deberias loguear el problema o sino quitar el try..catch para poder ver en pantalla si hay algun exception

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 17 de abril de 2015 19:46
  • Leandro:

    perdon mi ignorancia, pero cómo podria loguear el problema?

    saludos cordiales


    Ezequiel Lansztein

    viernes, 17 de abril de 2015 19:54
  • >>pero cómo podria loguear el problema?

    para resolver solo el problema quita el try..catch y con eso veras el error, no necesitas loguear

    pero despues de solucionado el problema si la idea es no mostrarlo los errores al usuario podrias usar log4net

    Dejando huella: cómo registrar eventos de nuestras aplicaciones (logging) con Log4Net



    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 17 de abril de 2015 20:00
  • Leandro: muchas gracia spor la pronta respuesta, hice lo que me dijiste y me salió este error. Qué debo hacer?

    System.InvalidOperationException: El proveedor 'vfpoledb' no est&#225; registrado en el equipo local.
       en System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)
       en System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
       en System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
       en System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
       en System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       en System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       en System.Data.OleDb.OleDbConnection.Open()
       en Servicio.accesoDatos.OleDbDataAccess(String query, ICollection`1 parametersCollection) en C:\Users\Diego\documents\visual studio 2010\Projects\WebService1\Servicio\accesoDatos.cs:línea 24
       en Servicio.Datos.GetArticulos() en C:\Users\Diego\documents\visual studio 2010\Projects\WebService1\Servicio\Datos.cs:línea 127
       en Servicio.Service1.getArticulos() en C:\Users\Diego\documents\visual studio 2010\Projects\WebService1\Servicio\Service1.asmx.cs:línea 54


    Ezequiel Lansztein

    viernes, 17 de abril de 2015 20:21
  • >>El proveedor 'vfpoledb' no est&#225; registrado en el equipo local.

    eso se deba a que seguramente el sitio lo creaste con compatibilidad para 64bits y el proveedor de fox no lo soporta

    compila cambiando el platform target a x86

    y en el iis habilita la opcion imagen para la compatibilidad de 32 bit

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 17 de abril de 2015 20:52
  • Muchas gracias Leandro, como siemrpe, tenes razon. :)

    Ezequiel Lansztein

    jueves, 23 de abril de 2015 19:15