Как исправить соединение с C # для удаленного подключения к dbf (общий файл) - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть веб-сервис на C #, он работает в IIS и использует DBF, такой как DDBB, теперь я получаю информацию из локального dbf на диске "C: \ usr \ content \", но теперь мне нужноизмените путь DBF к файлу общего доступа в той же сети, что и веб-сервер.

Когда я запускаю веб-сервис на локальном компьютере, у меня есть доступ для чтения удаленного DBF и он работает нормально, но когда я опубликовал веб-сервисЯ получил эту ошибку

'Временный (энергозависимый) Jet DSN для процесса 0x1fd8 Поток 0x1a28 DBC 0x51f8d6c Xbase'

Для подключения я использую OdbcConnection в некоторых методахи OleDb в других

Это строковое соединение:

 const String route = @"\\192.168.1.99\f\usr\PANAMA";
    const String route2 = @"I:\usr\";


    public const String CCVEND = @"Driver={Driver do Microsoft dBase (*.dbf)};collatingsequence=ASCII;dbq="+ route + ";defaultdir="+ route + @";deleted=0;driverid=533;fil=dBase 5.0;filedsn="+ route2 + "connection.dsn;maxbuffersize=2048;maxscanrows=8;pagetimeout=5;safetransactions=0;statistics=0;threads=3;usercommitsync=Yes";

Где файл по умолчанию находится на удаленном компьютере, я использую это строковое соединение для других методов:

OdbcConnection("Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;Exclusive=No;Collate=Machine;" +
              @"NULL=NO;DELETED=YES;BACKGROUNDFETCH=NO;SourceDB=" + route)

В обоих случаях все работает нормально, когда я запускаю его на Visual Studios (Local), проблема заключается в том, что я опубликовал.

Нужно ли мне что-то изменить, чтобы получить удаленное соединение?

Приложение : этометод, который я использую, и он отлично работает в местном

 [HttpGet]
    [Route("inventory/{ruta}")]
    public List<Inventory> GetInventory(String ruta)
    {

        List<Inventory> Ccclie = new List<Inventory>();


        DateTime date = DateTime.Today;

        int day = (int)date.Day;
        int month = date.Month;
        int year = date.Year;

        try
        {

            using (OdbcConnection con = new OdbcConnection("Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;Exclusive=No;Collate=Machine;" +
              @"NULL=NO;DELETED=YES;BACKGROUNDFETCH=NO;SourceDB=" + route))
            {
                con.Open();
                using (OdbcCommand cmd = new OdbcCommand("SELECT * FROM ccinven WHERE ruta = " + ruta+" and creacion = datetime("+year+", "+month+", "+day+")", con)) //20
                {
                    // OdbcDataReader reader = cmd.ExecuteReader();
                    OdbcDataReader DbReader = cmd.ExecuteReader();

                        while (DbReader.Read())
                        {


                            Ccclie.Add(new Inventory
                            {
                                Cod1 = (DbReader["Cod1"].Equals(DBNull.Value)) ? "" : DbReader["Cod1"].ToString().Trim(),
                                Codigo = (DbReader["Codigo"].Equals(DBNull.Value)) ? "" : DbReader["Codigo"].ToString().Trim(),
                                Descrip = (DbReader["Descrip"].Equals(DBNull.Value)) ? "" : DbReader["Descrip"].ToString().Trim(),
                                Precio = (DbReader["Precio"].Equals(DBNull.Value)) ? "" : DbReader["Precio"].ToString().Trim(),
                                Num = (DbReader["Num"].Equals(DBNull.Value)) ? "" : DbReader["Num"].ToString().Trim(),
                                Cantidad = (DbReader["Cantidad"].Equals(DBNull.Value)) ? "" : DbReader["Cantidad"].ToString().Trim(),
                                Ruta = (DbReader["Ruta"].Equals(DBNull.Value)) ? "" : DbReader["Ruta"].ToString().Trim()

                            });
                        }



                }
            }

        }
        catch (Exception ex)
        {
            Ccclie.Add(new Inventory
            {
                Cod1 = ex.ToString()
            });

        }

        return Ccclie;


    }
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...