سؤال

لديّ Wevservice ، وأود أن أكتب سجلات إلى textfile.

مشكلتي هي أنني لا أعرف المسار الذي يجب تقديمه عند إنشاء StreamWriter:

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

هل يمكنك المساعدة في أي مسار يجب أن أدخله؟

هل كانت مفيدة؟

المحلول

لا يهم المكان الذي تضعه فيه ، فأنت بحاجة فقط إلى منح خدمة الويب الأذونات المناسبة للموقع الذي تريد كتابته إليه. يمكنك إلقاء نظرة على تجمع التطبيقات لمعرفة المستخدم الذي تحتاجه لإعطاء الأذونات ، أو يمكنك استخدام الانتحال.

إذا كنت تستخدم "MyLogfile.log" سيكون موجودًا في نفس موقع خدمة الويب ، لذلك سيضعه المسار النسبي بالنسبة إلى هذا الموقع. ومع ذلك ، يمكنك استخدام مسار مطلق أيضًا ، مثل "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();
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top