IISログへの書き込みエラー(Response.AppendToLog) – プログラミング – Home

IISログへの書き込みエラー(Resp...
 
通知
すべてクリア

[解決済] IISログへの書き込みエラー(Response.AppendToLog)


Kum
 Kum
(@Kum)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

 Windows2000、Vusual Studio2002、framework1.0でコーディングをしています。
 ある画面「WebForm1.aspx.cs」でエラーが発生した際、他クラスである
「ErrorHandling.cs」でエラー処理をさせています。
さらにそこから、エラーの緊急度によって「createLog.cs」クラスでエラーログ生成処理
を行っています。
 そこで、「createLog.cs」内で「Response.AppendToLog(error!);」という記述をし
たのですが、エラーが発生してしまいます。「WebForm1.aspx.cs」などで同じ記述をして
も、エラーは出ないのですが・・・。また、using system.webも記述しています。
エラー内容は、「Exception Details: System.Web.HttpException: Response is not
available in this context.」というものです。
どなたかご存知の方がいらっしゃいましたら、どうかご教授ください。


引用未解決
トピックタグ
Kum
 Kum
(@Kum)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

Kumです。たびたび失礼します。
問題解決のために、以下のような記述が必要と聞きました。

System.Web.HttpResponse Response = new System.Web.HttpResponse();
Response.AppendToLog(This is error test.);

ただ、これだけだとnew System.Web.HttpResponse();の部分で
引数が必要らしいんです。
MSDN等を見ても分からないのですが、何を記述すればいよいのでしょうか。


返信引用
シー
 シー
(@シー)
ゲスト
結合: 22年前
投稿: 17
 

ネットで、

string str = Filename;
TextWriter writer = new StreamWriter(str);
System.Web.HttpResponse Response = new System.Web.HttpResponse(writer);

のような記述を見つけました。

Filename を IIS のログファイルへのパスに置き換えます。
string str = C:\\WINNT\\SYSTEM32\\LogFiles\\W3SVC1\\ex030704;
ただし、アクセス権が無いと失敗するようです。

あるいは、WebForm1のResponseをそのクラスのメソッドのパラメータにするのが簡単かも知れ
ませんね。
public void Log(System.Web.HttpResponse res)
{
res.AppendToLog(Error!!);
}


返信引用
Kum
 Kum
(@Kum)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

シーさん
Kumです。回答していただき、ありがとうございます。
下記のようにコーディングしてみたところ
string str = C:\\WINNT\\system32\\LogFiles\\W3SVC1\\ex030704.log;
TextWriter writer = new StreamWriter(str, true);
System.Web.HttpResponse Response = new System.Web.HttpResponse(writer);
Response.AppendToLog(TEST);

下記のエラーが出ました。
The process cannot access the file C:\WINNT\system32\LogFiles\W3SVC1
\ex030704.log because it is being used by another process.

IISが動いているので出てしまうのかなと思ったのですが、詳細は分かりませんでした。
ですので、IISログはあきらめ、下記のようにしてしまいました。(抜粋)
FileInfo errorFile = new FileInfo(@C:\WINNT\system32\LogFiles\error.log);
StreamWriter stream = errorFile.AppendText();
stream.WriteLine(Test);
stream.Close();

お手数をおかけしました。ありがとうございました。
Kum


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました