通过Web服务编写文件

时间:2010-06-12 19:57:34

标签: .net web-services path asmx streamwriter

我有一个wevservice,我想将日志写入文本文件。

我的问题是我不知道在创建编写器时要给出的路径:

TextWriter tw = new StreamWriter("????");

你能帮助我进入我应该进入的道路吗?

2 个答案:

答案 0 :(得分:3)

无论你把它放在哪里,你只需要为你想要写入的位置赋予web服务适当的权限。您可以查看应用程序池以查看授予权限所需的用户,或者您可以使用模拟。

如果您使用"MyLogfile.log",它将与Web服务位于同一位置,因此相对路径会将其相对于该位置。但是,您也可以使用绝对路径,例如"c:/log/MyLogfile.log“。

我希望它有所帮助。

答案 1 :(得分:1)

请参阅Server.MapPaththis article on 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();
    }
}