Question

J'ai un wevservice, et je voudrais écrire les journaux dans un fichier texte.

Mon problème est que je ne sais pas quel chemin donner lors de la création du StreamWriter:

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

Pouvez-vous aider quel chemin j'entrer?

Était-ce utile?

La solution

Peu importe où vous le mettez, il vous suffit de donner le service Web les autorisations appropriées à l'endroit où vous souhaitez écrire. Vous pouvez jeter un oeil à la piscine d'application pour voir quel utilisateur vous devez donner les autorisations, ou vous pouvez utiliser l'usurpation d'identité.

Si vous utilisez "MyLogfile.log" il sera situé au même endroit que le service web, donc un chemin relatif par rapport à mettre cet endroit. Vous pouvez cependant utiliser aussi un chemin absolu, comme "c:/log/MyLogfile.log ».

J'espère que cela a aidé.

Autres conseils

Voir Server.MapPath et < a href = "http://www.codeproject.com/KB/trace/createlogfiles.aspx" rel = "nofollow noreferrer"> cet article sur CodeProject

Mise à jour : Voici un exemple est en deploy de commande sur le serveur et créer un sous-répertoire pour les fichiers journaux. Vous pouvez tester à l'aide de votre navigateur.

<%@ 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();
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top