将数据写入App_Data

ahe*_*ang 8 .net asp.net file-io

我想使用以下代码将.xml文件写入App_Data/posts.为什么会导致错误?

 Stream writer  = new FileStream("..'\'App_Data'\'posts'\'" + new Guid(post_ID.ToString()).ToString() + ".xml", FileMode.Create);
Run Code Online (Sandbox Code Playgroud)

dri*_*iis 20

请发布您获得的例外情况; 不只是"它不起作用" - 这可能是各种各样的问题.以下是一些要检查的事项:

检查ASP.NET进程是否具有该目录的写访问权.

此外,看起来你正在逃避路径中的退格错误.在使用ASP.NET时,您的路径应该相对于应用程序根目录.试试这个:

string path = HttpContext.Current.Server.MapPath("~/App_Data/posts/" + new Guid(post_ID.ToString()).ToString() + ".xml"
Stream writer  = new FileStream(path, FileMode.Create);
Run Code Online (Sandbox Code Playgroud)

最后,确保posts目录存在 - 否则文件创建将失败.

  • 首先,您可以检查您获得的异常是否是UnauthorizedException - 在这种情况下,它是权限问题.您获得的例外情况应该与您的问题一起发布.如果是权限问题,请使用Windows资源管理器为App_Data文件夹的IIS_WPG组授予读/写访问权限. (3认同)

Mat*_*nen 7

删除无关的单引号并正确地逃避反斜杠.

甚至更好,使用Server.MapPath(在Page和UserControl基类以及HttpContext等中可用).

Server.MapPath("~/App_Data/posts/" + new Guid(post_ID.ToString()).ToString() + ".xml")
Run Code Online (Sandbox Code Playgroud)

出于好奇,post_ID的类型是什么?为什么要将它转换为字符串,然后转换为guid,然后再转换为字符串?