Написание файла веб-сервисом - PullRequest
0 голосов
/ 12 июня 2010

У меня есть сервис wevservice, и я хотел бы записывать логи в текстовый файл.

Моя проблема в том, что я не знаю, какой путь указать при создании потокового редактора:

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

Не могли бы вы помочь, по какому пути я должен войти?

Ответы [ 2 ]

3 голосов
/ 13 июня 2010

Неважно, где вы его разместите, вам просто нужно дать веб-службе соответствующие разрешения для местоположения, в которое вы хотите написать. Вы можете взглянуть на пул приложений, чтобы увидеть, какому пользователю вам нужно предоставить разрешения, или вы можете использовать олицетворение.

Если вы используете "MyLogfile.log", он будет расположен в том же месте, что и веб-служба, поэтому относительный путь будет относить его к этому местоположению. Однако вы также можете использовать абсолютный путь, например "c:/log/MyLogfile.log ".

Надеюсь, это помогло.

1 голос
/ 13 июня 2010

См. 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...