2011-09-09 12 views
0

同じサーバー上のビジュアルfox pro dbfファイルにレコードを追加しようとしているwcf 4サービスがあります。挿入をしようとすると、「カーソルUSERを更新できません。読み込み専用です。」wcfサービスはdbfファイルを更新できません - "読み取り専用"エラー

私はこれがアクセス許可の問題であると仮定します。 wcfサービスでdbfファイルを更新する権限を与えるためには何が必要ですか?

これは私の開発マシンで動作します。

は、ここでは、コードの一部です:

OleDbConnection oConn = new OleDbConnection("provider=vfpoledb;Data Source="\\data\\tt.dbc"); 
      oConn.Open(); 
OleDbCommand oCommand = new OleDbCommand(); 
        oCommand.Connection = oConn; 
        oCommand.CommandText = "SET NULL OFF\r\nSET DELETED ON"; 
        oCommand.ExecuteNonQuery(); 

OleDbCommand mycmd = new OleDbCommand("insert into user (lastname,firstname) values ('Doe','John')", oConn); 
      mycmd.CommandType = CommandType.Text; 

         lnRet = mycmd.ExecuteNonQuery(); 

答えて

0

それは権限の問題ではない - アクセス拒否エラーを生成しています。チェックする

2つのこと:

  1. は読み取り専用としてマークされたファイルですか?

  2. ファイルは他のプロセスで使用されていますか?

私は#2がより可能性が高いと思います - 私はFoxProのを行っていないが、私はクリッパーでのdBaseをたくさんやったし、少なくともdBaseの下にファイルが排他的に開かれなければなら(すなわち、ありません共有)を使用して挿入/更新/削除を行います。

+0

私はdbfsに関する多くの経験があり、ファイルを更新するために排他的にファイルを開く必要はありませんでした。たぶん、vfpoledbを使用して問題がありますか? – ygreenstein

+0

私が言及したように、私の開発マシンでも同様のシナリオでうまくいきます。 – ygreenstein

+0

それはvfpoledbであるかもしれません - 私はその特定のドライバを使用していません。私はOleDbを使ってDBFを更新する必要はまだないので、排他的にすることはOleDbの問題ではない。それはクリッパーを通過しています。 – Tim

0

WCFサービスを実行するために使用される資格情報に、データUNCパスに対する読み取り/書き込みアクセス権があることを確認する必要があります。

+0

ありがとうございます。どの資格情報を使用してWCFサービスを実行するかを決定するにはどうすればよいですか? – ygreenstein

+0

WCFサービスがIISでホストされている場合は、アプリケーションプールの資格情報を確認できます。それ以外の場合は、タスクマネージャでプロセスを検索して資格情報を確認できます。 –

+0

ありがとうございます - これで問題は解決します! – ygreenstein

関連する問題