私は webservice を持っており、ログをテキストファイルに書き込みたいと考えています。
私の問題は、ストリームライターを作成するときにどのパスを指定すればよいかわからないことです:
TextWriter tw = new StreamWriter("????");
どのパスに入るべきか教えてください。
私は webservice を持っており、ログをテキストファイルに書き込みたいと考えています。
私の問題は、ストリームライターを作成するときにどのパスを指定すればよいかわからないことです:
TextWriter tw = new StreamWriter("????");
どのパスに入るべきか教えてください。
どこに置くかは関係ありません。書き込みたい場所への適切なアクセス許可をWebサービスに与えるだけです。アプリケーションプールを調べて、アクセス許可を与える必要のあるユーザーを確認するか、偽装を使用できます。
使用する場合は"MyLogfile.log"
、Webサービスと同じ場所に配置されるため、相対パスによってその場所を基準にして配置されます。ただし、「」のように絶対パスを使用することもできます"c:/log/MyLogfile.log
。
お役に立てば幸いです。
Server.MapPathとCodeprojectに関するこの記事を参照してください。
更新: サーバーにデプロイし、ログ ファイル用のサブディレクトリを作成するための例を次に示します。ブラウザを使用してテストできます。
<%@ WebService Language="c#" Class="Soap"%>
using System;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.IO;
[WebService]
public class Soap : System.Web.Services.WebService
{
[WebMethod(EnableSession=true)]
public bool Login(string userName, string password)
{
//NOTE: There are better ways of doing authentication. This is just illustrates Session usage.
LogText("Login User = " + userName);
UserName = userName;
return true;
}
[WebMethod(EnableSession=true)]
public void Logout()
{
LogText("Logout User = " + UserName);
Context.Session.Abandon();
}
private string UserName {
get {return (string)Context.Session["User"];}
set {Context.Session["User"] = value;}
}
private void LogText(string s) {
string fname = Path.Combine(
Server.MapPath( "/logs" ), "logfile.txt");
TextWriter tw = new StreamWriter(fname);
tw.Write("Yada yada :" + s);
tw.Close();
}
}