.net 通过Web服务编写文件

.net 通过Web服务编写文件,.net,web-services,path,asmx,streamwriter,.net,Web Services,Path,Asmx,Streamwriter,我有一个wevservice,我想将日志写入一个文本文件 我的问题是,在创建streamwriter时,我不知道应该给出什么路径: TextWriter tw = new StreamWriter("????"); 您能帮助我输入什么路径吗?请参阅和 更新:下面是一个示例,用于在服务器上部署并为日志文件创建子目录。您可以使用浏览器进行测试 使用系统; 使用系统数据; 使用System.Web; 使用System.Web.Services; 使用System.Web.Services.Pro

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

我的问题是,在创建streamwriter时,我不知道应该给出什么路径:

TextWriter tw = new StreamWriter("????");
您能帮助我输入什么路径吗?

请参阅和

更新:下面是一个示例,用于在服务器上部署并为日志文件创建子目录。您可以使用浏览器进行测试


使用系统;
使用系统数据;
使用System.Web;
使用System.Web.Services;
使用System.Web.Services.Protocols;
使用System.IO;
[网络服务]
公共类Soap:System.Web.Services.WebService
{
[WebMethod(EnableSession=true)]
公共bool登录(字符串用户名、字符串密码)
{
//注意:有更好的方法进行身份验证。这只是演示了会话使用情况。
LogText(“登录用户=”+用户名);
用户名=用户名;
返回true;
}
[WebMethod(EnableSession=true)]
公开作废注销()
{    
LogText(“注销用户=”+用户名);
Context.Session.放弃();
}
私有字符串用户名{
获取{return(string)Context.Session[“User”];}
设置{Context.Session[“User”]=value;}
}
专用void日志文本(字符串s){
字符串fname=Path.Combine(
Server.MapPath(“/logs”),“logfile.txt”);
TextWriter tw=新的StreamWriter(fname);
tw.写入(“Yada-Yada:+s”);
tw.Close();
}
}
请参见和

更新:下面是一个示例,用于在服务器上部署并为日志文件创建子目录。您可以使用浏览器进行测试


使用系统;
使用系统数据;
使用System.Web;
使用System.Web.Services;
使用System.Web.Services.Protocols;
使用System.IO;
[网络服务]
公共类Soap:System.Web.Services.WebService
{
[WebMethod(EnableSession=true)]
公共bool登录(字符串用户名、字符串密码)
{
//注意:有更好的方法进行身份验证。这只是演示了会话使用情况。
LogText(“登录用户=”+用户名);
用户名=用户名;
返回true;
}
[WebMethod(EnableSession=true)]
公开作废注销()
{    
LogText(“注销用户=”+用户名);
Context.Session.放弃();
}
私有字符串用户名{
获取{return(string)Context.Session[“User”];}
设置{Context.Session[“User”]=value;}
}
专用void日志文本(字符串s){
字符串fname=Path.Combine(
Server.MapPath(“/logs”),“logfile.txt”);
TextWriter tw=新的StreamWriter(fname);
tw.写入(“Yada-Yada:+s”);
tw.Close();
}
}

无论您将其放置在何处,您只需向web服务授予您要写入的位置的适当权限即可。您可以查看应用程序池,查看需要向哪个用户授予权限,也可以使用模拟

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


我希望它能有所帮助。

不管你把它放在哪里,你只需要给web服务适当的权限,让它访问你想写入的位置。您可以查看应用程序池,查看需要向哪个用户授予权限,也可以使用模拟

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


我希望有帮助。

您想在哪里创建文本文件?最好在asmx文件的同一位置创建文本文件?最好在asmx文件的同一位置创建文本文件?最好在asmx文件映射路径的同一位置将web服务器上的虚拟路径转换为您需要作为StreamWriter参数的物理路径,以便整个物理路径应该是Path.Combine(Server.MapPath(“/myvirtualdir”),“logfile.txt”);我认为这在Web服务中不起作用。。。。我收到一个错误,该方法在当前上下文中不存在。我指的是(Path.Combine(Microsoft.SqlServer.Server.MapPath(“/myvirtualdir”),“logfile.txt”)中的“MapPath”;我指的是System.Web命名空间。SQL Server与itMapPath无关。它将Web服务器上的虚拟路径转换为StreamWriter所需的物理路径,因此整个物理路径应为path.Combine(Server.MapPath(“/myvirtualdir”),“logfile.txt”);我认为这在Web服务中不起作用……我得到一个错误,即该方法在当前上下文中不存在。我指的是(Path.Combine(Microsoft.SqlServer.Server.MapPath(“/myvirtualdir”),“logfile.txt”)中的“MapPath”;我指的是System.Web命名空间。SQL Server与此无关