当站点在Windows7 IIS 6.0中托管时,Visual Foxpro 8.0无响应

时间:2013-01-04 10:04:17

标签: asp.net iis-6 oledb visual-foxpro


我创建了一个ASP.Net 4.0网站,并与Visual Foxpro 8.0数据库建立OLEDB连接,以便从表中选择数据。使用过的代码写在下面......

    string strConnString = "Provider=vfpoledb;Data Source=C:\Users\mohammads\Documents\Visual FoxPro Projects\dbTallowMaster.dbc;";
    OleDbConnection connection = new OleDbConnection(strConnString);
    connection.Open();
    string username = "675";
    string password = "675";
    string sqlQuery = "SELECT userinfoid, username, password FROM tm_userinfo.dbf WHERE username = \"" + username + "\" AND password = \"" + password + "\"";
    OleDbCommand cmd = new OleDbCommand(sqlQuery, connection);
    OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter(cmd);
    DataTable dt = new DataTable();
    oOleDbDataAdapter.Fill(dt);

此代码在本地系统中运行正常,但是当我在Windows 7 IIS 6.0上托管此站点时,连接未打开,我收到“无效路径或文件名”错误。 请告诉我为什么只有当我在IIS中托管它时,此代码才会产生问题。

在IIS中托管站点时,是否应该对连接字符串的数据源进行一些更改。

1 个答案:

答案 0 :(得分:2)

旁注...我会开始使用参数化构建您的查询,尤其是来自网络时。 VFP使用“?”作为参数的占位符,因此您不必明确地将值包装在引号中。

string sqlQuery = "SELECT userinfoid, username, password "
    + "FROM tm_userinfo.dbf "
    + "WHERE username = ? and password = ?";
OleDbCommand cmd = new OleDbCommand(sqlQuery, connection);
cmd.Parameters.Add("parmUserName", OleDbType.Char).Value = username; // from your string
cmd.Parameters.Add("parmPassword", OleDbType.Char).Value = password; // variables...

OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter(cmd);

请注意,参数的添加顺序与“?”相同。在查询中。

至于连接,不应该是

“vfpoledb.1”而不是连接字符串中的“vfpoledb”。

最后,考虑一下,由于您的数据位于“用户”下的子文件夹中,因此它们通常会“限制”给该用户。运行IIS时,用户通常类似于

IUSR_ {机器名称}代表互联网用户,而不是您。因此权限可能是您的问题。