- - PR -
ASP.NETでファイル書込みしたいのですが
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-02 18:12
こんにちは、でっちです。
どなたも指摘されてませんが...
log4net使ってるなら、テーブル作って直接DBにログ吐いちゃう設定にした方が早いような... APサーバが複数台になった時にも対応が取れますし。 ファイルの書込み権限は、「ASP.NET ユーザ 偽装」あたりのキーワードでググると幸せになれると思います。 | ||||||||
|
投稿日時: 2006-06-02 22:31
今年初めにハマりました。
DB サーバに「ASPNET」アカウントがある場合、Web サーバの「ASPNET」アカウントとパスワードが異なるため、書き込みできません。 あ、Windows 2003 Server か。 『たぶんNETWORK SERVICEだと思いますよ…』ですね。 DB サーバと Web サーバに、同じ名前で同じパスワードのアカウントを作り、ファイルを書き込むときだけそのアカウントに偽装します。 ドメイン環境なら、ドメインのアカウントに偽装します。 | ||||||||
|
投稿日時: 2006-06-02 23:20
そうですね。ADOAppenderでしたっけ? 最初頃それも考えたんですが、メッセージ部分は一括して1つのカラムに出力することになるはずです。 そのメッセージ部分にカンマ区切りで複数の情報を入れ、それぞれの内容で検索をかけたかったので、Oracleの外部テーブルを作ることにしたのです。 現在ひとつひとつハマリ中です。 Log4netのファイル出力先のパスをUNCで書くとよいということでしたが、 ためしにローカルのファイルを指定してみました。 <param "File" "C$\\Test\\weblog.log" /> すると思いっきり"C$\\Test\\weblog.log"という名前のファイル名になって出力されました。定義ファイルはXMLファイルなのでうまくいかないのでしょうか? (それとも¥の書き方がXMLだと違う?) ここがクリアされないと、偽装がうまくできてもダメですよねぇ。 (\\と表示されている部分は¥マーク(半角)です) 偽装についてはまだ勉強中です。 わかりそうでわかりませんが、もう少し頑張ってみます。 | ||||||||
|
投稿日時: 2006-06-03 03:19
UNCの指定は、
\\DBServer\test\weblog.log ではないですか? (\は¥です。また、"DBServer"は適宜変更してください。) | ||||||||
|
投稿日時: 2006-06-03 16:39
これ大事ですよね。特に 「ファイルを書き込むときだけそのアカウントに偽装します。」 の部分。 これは、Microsoft の consult の方に聞いて素直に納得したんですが、通常 .NET で偽装というと web.config での偽装を想定することが多いと思うので補足が必要ではないですか? > jitta さん web.config の場合、ASP.NET で動くものすべてがその偽装 account で動くため、secure ではないですね。 # まあ、ここら辺はどこまでの security level を求められるかにもよりますがね。 # ちゃんとやるとなるとそれこそ手間かかりますから。 ちなみに、OS とかが標準で持っている機能を利用しようとしないで偽装を行う場合、一般的に password が必須だったりします。 # まあ、OS が標準で持っている機能にしたって内部で password を保存しているわけですが・・・ そういった場合、password をどこにどうやって保存するかというのが問題になります。 Microsoft では一応こんな方法を公開していますね。 セキュリティ保護された ASP.NET アプリケーションの構築 : 認証、認定、および通信のセキュリティ保護 | ||||||||
|
投稿日時: 2006-06-03 21:29
Jittaさん、ちゃっぴさんありがとうございます。
やっぱり軽い気持ちではやらないほうがよさそうですね。 勉強している時間は今はないので(納品間近です!)今回はデバッグログのみ log4netでファイル出力して、管理画面で検索可能なログ(トランザクションが発生する場合のみ出力)はDBに登録する事にしました。 結局偽装は行わなかったわけですが、 いづれ必要になるテクニックだと思いますのでやはり勉強は必要だと思います。 それにできなかったのが悔しい・・・。 とりあえず今回はこのへんで。 皆様、いつも本当に本当にありがとうございました! | ||||||||
|
投稿日時: 2006-06-04 21:54
IIS5だとweb.configで偽装する形になりますが、IIS6の場合はワーカープロセスの
実行アカウント(ASP.NETの実行ユーザ)を変更するのが簡単にできるようですね。 「ASP.NETでいってみよう」という本にIISと別マシンにあるSQL Serverとの連携と いうことで説明されていますが、ファイルシステムであっても同様の手順で いけると思います。 | ||||||||
|
投稿日時: 2006-06-04 23:15
どっとねっとふぁんさん、私その本持ってます!
ASP.NETを始めるにあたって、一番最初に買った本です。 いやぁ、当時はそこまで読み込んでなかったんですね。 もちろん読み直します! 貴重な情報ありがとうございました。 ぜひ、ぜひトライしてみますよぅ! |