Frage

Ich habe eine wevservice, und ich möchte Protokolle in eine Textdatei schreiben.

Mein Problem ist, dass ich weiß nicht, welcher Weg zu geben, wenn die Streamwriter erstellen:

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

Können Sie Hilfe bitte, welchen Weg soll ich geben?

War es hilfreich?

Lösung

Es spielt keine Rolle, wo Sie es ausdrückte, brauchen Sie nur den Web-Service über die entsprechenden Berechtigungen an den Ort, den Sie schreiben wollen geben. Sie können einen Blick auf den Anwendungspool, um zu sehen, welcher Benutzer die Berechtigungen geben müssen, oder Sie können Identitätswechsel verwenden.

Wenn Sie "MyLogfile.log" wird es in der gleichen Position wie der Web-Service befindet, so ein relativer Pfad relativ zu dieser Stelle setzen. Sie können jedoch einen absoluten Pfad verwenden auch, wie "c:/log/MyLogfile.log“.

Ich hoffe, es hilft.

Andere Tipps

Siehe Server.MapPath und < a href = "http://www.codeproject.com/KB/trace/createlogfiles.aspx" rel = "nofollow noreferrer"> dieser Artikel auf Codeproject

Aktualisieren : Hier ist ein Beispiel wird auf dem Server, um deploy und Erstellen von Dateien ein Unterverzeichnis für log. Sie können testen Sie Ihren Browser.

<%@ 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();
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top