0


ASP.Net 4.0 Web サイトを作成し、テーブルからデータを選択するために 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 でサイトをホストしているときに、接続文字列のデータソースに何らかの変更が必要ですか。

4

1 に答える 1

2

補足...特にWebからの場合は、パラメーター化されたものを使用してクエリの作成を開始します。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」の代わりに「vfpoledb.1」。

最後に、考慮事項として、データは「ユーザー」の下のサブフォルダーにあるため、通常はそのユーザーに「制限」されます。IISを実行している場合、ユーザーは通常、次のようになります。

IUSR_ {マシン名}は、あなたではなくインターネットユーザーを表します。したがって、権限が問題になる可能性があります。

于 2013-01-04T13:38:02.483 に答える