У меня есть веб-сервис на 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;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++