linq to sql Insertがデプロイされたサーバー(IIS)で機能しない
-
08-07-2019 - |
質問
タイトルはそれ自体を物語っています
db.ExecuteCommand("INSERT INTO tCSVFile(fileName, fileContent, mimetype, timeCreated) VALUES({0}, {1}, {2}, {3})", filename, EncodeTo64(CreateCSVFile(header, rows)), "text/csv", DateTime.Now );
これは仮想サーバーでは正常に機能しますが、IISに挿入しても何も起こりません。
これも試してみました。
tCSVFile c = new tCSVFile
{
fileContent = EncodeTo64(CreateCSVFile(header, rows)),
fileName = filename,
mimetype = "text/csv",
timeCreated = DateTime.Now
};
db.tCSVFiles.InsertOnSubmit(c);
db.SubmitChanges();
再び仮想サーバー上で動作しますが、それはうまくいきません。私はウェブを見て、何の役に立つものも見つけていないので、どんな助けも大歓迎です。私の選択は問題なく機能し、問題なく選択できます。
接続文字列は
<add name="db_ac_motors_testConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\db_ac_motors_test.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
挿入はMVC部分ビューからの呼び出しであり、ajax.beginform()を介して行われます
解決 3
最終的に何らかの例外を探して数時間を費やした後、イベントログにスタックトレースを保存し、このエラーを見つけました
System.Data.SqlClient.SqlException: Failed to update database "(database directory)" because the database is read-only.
そのため、インターネット上での釣りでは、ユーザーのアクセス許可の制限と関係がありました。
同じ問題が発生した場合のリンクはこちらです。デバッグ仮想サーバーはフォルダーのアクセス許可を異なる方法で読み取るため、展開のみの制限があります(アクセス許可に関しては、IISは少し面倒です)。そして、例外が返されなかったことに驚きました...私はスタックトレースにアクセスするために多くのことをしなければならなかった、私も始めたくない...とにかくリンクはこれに従うだけで、それはあなたを指すはずです正しい方向に。
他のヒント
データベースが正しく接続されていることを確認してください。多くのISPでセットアップされているため、使用した接続文字列方式を使用してデータベースを接続することはできません。それはあなたが見るべき最初の場所です。エラーが発生すると思いますが、スタックのどこかに飲み込まれる可能性があります。
SQLをアタッチするのではなく、SQLインスタンス(必ずしもSQL Expressである必要はありません)に移動する必要がある場合、これが役立つ場合があります。 http://gregorybeamer.spaces.live.com/ blog / cns!B036196EAF9B34A8!630.entry?sa = 214268831
関数/メソッド CreateCSVFile()
は何をしますか?ファイルシステムにファイルを書き込む場合、パーミッションの問題があるように見えます。つまり、サイトの匿名ユーザーには書き込み権限がない可能性があります。
考えてみてください。
Kev